Saya ingin menyatukan banyak file bersama dalam urutan nama file.
Apakah aman untuk menganggap bahwa ini akan memberi saya mereka dalam urutan alfanumerik?
cat *
yaitu urutan yang sama yang ls
memberi.
Jawaban singkat: Ya itu akan.
Dari halaman bash man :
Setelah pemisahan kata, kecuali opsi -f telah ditetapkan (lihat The Set Builtin), Bash memindai setiap kata untuk karakter '*', '?', Dan '['. Jika salah satu karakter ini muncul, maka kata tersebut dianggap sebagai pola, dan diganti dengan daftar nama file yang diurutkan berdasarkan abjad yang cocok dengan pola tersebut.
$LC_COLLATE
).ls
pada sistem yang sama.Jawaban singkatnya adalah ya, tetapi Anda harus waspada terhadap apa yang seharusnya menjadi urutan alfanumerik, karena mungkin tidak sesuai dengan urutan alami yang ada dalam pikiran Anda.
Misalnya, jalankan beberapa tes tentang bagaimana huruf besar dan kecil ditangani untuk mencari tahu di sistem Anda, serta urutan angka.
Masalah umum yang saya hadapi dalam memesan daftar file yang dikembalikan oleh glob adalah file bernomor. Saya sering diberi file bernomor seperti:
Namun, gumpalan yang menggunakan
*
tidak akan mengembalikan mereka dalam urutan ini, sebagai gantinya Anda akan mendapatkan sesuatu seperti:Jadi - untuk menghindari masalah ini Anda akan baik perlu melakukan beberapa manipulasi pada daftar kembali file, atau file rename sehingga satu digit telah nol (yaitu
blah_01.txt
,blah_02.txt
, dll).sumber