ฉันต้องผ่านรายการเรียงลำดับชื่อไฟล์ FLAC ที่ยกมาให้ SoX สำหรับการต่อข้อมูล แต่ฉันมีปัญหาในการเรียงลำดับเพื่อทำงานตามที่ฉันคาดหวัง
ถ้าฉันใช้:
find . -maxdepth 1 -type f -iname "*.flac" | sort
ฉันได้สิ่งที่ฉันคาดหวัง:
./01-Lordy.flac
./02-Both Sides Now.flac
./03-Solitary Man.flac
./04-Holly Holy.flac
./05-Cherry Cherry.flac
./06-Kentucky Woman.flac
./07-Sweet Caroline.flac
./08-Thank the Lord for the Nightime.flac
./09-And the Singer Sings His Song.flac
./10-Brother Loves Traveling Salvation Show.flac
อย่างไรก็ตามฉันไม่สามารถใช้สิ่งนั้นกับสิ่งที่ฉันทำเพราะฉันต้องการรายชื่อที่เสนอโดยไม่มีบรรทัดใหม่ ฉันรู้ว่า - printf สามารถทำสิ่งนี้ให้ฉันได้ แต่เมื่อฉันลอง:
find . -maxdepth 1 -type f -iname "*.FlAc" -printf "\"%p\" " | sort
ฉันจบลงด้วยรายการชื่อไฟล์ที่ยกมาและคั่นด้วยช่องว่างเดียว (ดี!) แต่พวกเขาไม่ได้เรียงลำดับ (แย่มาก!) หรืออย่างน้อยพวกเขาก็ไม่ได้เรียงอย่างที่ฉันคาดไว้:
"./08-Thank the Lord for the Nightime.flac" "./03-Solitary Man.flac" "./09-And the Singer Sings His Song.flac" "./05-Cherry Cherry.flac" "./06-Kentucky Woman.flac" "./10-Brother Loves Traveling Salvation Show.flac" "./07-Sweet Caroline.flac" "./02-Both Sides Now.flac" "./01-Lordy.flac" "./04-Holly Holy.flac"
อาจจะแปลกกว่านี้ถ้าฉันแค่ทดสอบเพื่อใช้รหัสเดียวกัน แต่เพิ่มขึ้นบรรทัดใหม่:
find . -maxdepth 1 -type f -iname "*.FlAc" -printf "\"%p\" "\\n | sort
การเรียงลำดับใช้งานได้แม้ว่าเอาต์พุตจะไม่เป็นสิ่งที่ฉันต้องการ:
"./01-Lordy.flac"
"./02-Both Sides Now.flac"
"./03-Solitary Man.flac"
"./04-Holly Holy.flac"
"./05-Cherry Cherry.flac"
"./06-Kentucky Woman.flac"
"./07-Sweet Caroline.flac"
"./08-Thank the Lord for the Nightime.flac"
"./09-And the Singer Sings His Song.flac"
"./10-Brother Loves Traveling Salvation Show.flac"
นี่คือภายใต้ Ubuntu 18.04.1
sort
เรียงลำดับบรรทัด (หรือด้วย GNU sort -z
องค์ประกอบที่คั่นด้วย null) - ไม่น่าแปลกใจเลยที่จะไม่เรียงชื่อไฟล์เมื่อพวกเขาอยู่ในบรรทัดเดียว
find . -iname '*.flac' -print0 | sort -z | xargs -0 sox ...
แทนการทำ messing กับ quoting และ unquoting
find
ที่นี่เพื่อการสอบถามซ้ำหรือไม่? หรือไฟล์ทั้งหมดที่ต้องการในไดเรกทอรีเดียวกันคืออะไร? (ฉันถามกำหนด-maxdepth 1
และตัวอย่างผลลัพธ์ที่แสดงไดเรกทอรีเดียวกัน)