ฉันต้องการต่อไฟล์หลายไฟล์เข้าด้วยกันตามลำดับชื่อไฟล์
จะปลอดภัยหรือไม่ที่จะสมมติว่าสิ่งนี้จะให้พวกเขาตามลำดับตัวอักษรและตัวเลข?
cat *
เช่นคำสั่งเดียวกับที่ls
ให้
ฉันต้องการต่อไฟล์หลายไฟล์เข้าด้วยกันตามลำดับชื่อไฟล์
จะปลอดภัยหรือไม่ที่จะสมมติว่าสิ่งนี้จะให้พวกเขาตามลำดับตัวอักษรและตัวเลข?
cat *
เช่นคำสั่งเดียวกับที่ls
ให้
คำตอบ:
คำตอบสั้น ๆ : ใช่มันจะ
จากหน้าคนทุบตี :
หลังจากแยกคำยกเว้นว่ามีการตั้งค่าตัวเลือก -f (ดู The Set Builtin) Bash จะสแกนแต่ละคำเพื่อหาอักขระ '*', '?' และ '[' หากหนึ่งในอักขระเหล่านี้ปรากฏขึ้นคำนั้นจะถือเป็นรูปแบบและแทนที่ด้วยรายการที่เรียงลำดับตามตัวอักษรของชื่อไฟล์ที่ตรงกับรูปแบบ
ls
กับในระบบเดียวกันจะ
คำตอบสั้น ๆ คือใช่ แต่คุณต้องระวังสิ่งที่คิดว่าลำดับตัวอักษรและตัวเลขควรเป็นเพราะอาจไม่สอดคล้องกับระเบียบธรรมชาติที่คุณมีในใจ
ตัวอย่างเช่นเรียกใช้การทดสอบบางอย่างเกี่ยวกับวิธีการจัดการกรณีบนและล่างเพื่อค้นหาในระบบของคุณเช่นเดียวกับลำดับของตัวเลข
ปัญหาทั่วไปที่ฉันพบในการเรียงลำดับรายการไฟล์ที่ส่งคืนโดย glob คือไฟล์ที่มีหมายเลข ฉันมักจะได้รับไฟล์ที่มีหมายเลขเช่น:
blah_1.txt
blah_2.txt
...
blah_10.txt
blah_11.txt
อย่างไรก็ตามการใช้ glob *
จะไม่ส่งคืนพวกเขาตามลำดับนี้ แต่คุณจะได้รับดังนี้:
blah_1.txt
blah_10.txt
blah_11.txt
...
blah_2.txt
blah_20.txt
...
ดังนั้น - เพื่อหลีกเลี่ยงปัญหานี้คุณอาจจะจำเป็นที่จะต้องทำเช่นการจัดการบางอย่างอยู่ในรายชื่อกลับมาของไฟล์หรือไฟล์เปลี่ยนชื่อเพื่อให้ได้เลขหลักเดียวศูนย์นำ (เช่นblah_01.txt
, blah_02.txt
ฯลฯ )
$LC_COLLATE
)