apa urutan penyortiran default untuk entri yang dikembalikan oleh perintah find linux?
Misalnya, jika saya menerbitkan
find . -type f -name '*mp3'
dan output terdiri dari banyak file di beberapa sub-folder, apa urutan default direktori mana yang terdaftar? Pada saat yang sama, apa urutan pengurutan di mana file dalam direktori individu terdaftar?
Terkadang ia kembali:
./B/01.mp3
./A/01.mp3
./A/04.mp3
./A/02.mp3
Lihat bagaimana pertama kali isi direktori B terdaftar, kemudian direktori A. Pada saat yang sama dalam direktori A, file-file terdaftar dalam urutan yang lucu.
-s
parameter untuk mengurutkan output berdasarkan abjad.Jawaban:
find
akan melintasi pohon direktori dalam urutan item disimpan dalam entri direktori. Ini (sebagian besar) akan konsisten dari menjalankan ke menjalankan, pada mesin yang sama dan pada dasarnya akan menjadi "urutan pembuatan file / direktori" jika tidak ada penghapusan.Namun, beberapa sistem file akan memesan ulang entri direktori sebagai bagian dari operasi pemadatan atau ketika ukuran entri perlu diperluas, sehingga selalu ada kemungkinan kecil pesanan "mentah" akan berubah seiring waktu. Jika Anda menginginkan pesanan yang konsisten, masukkan output melalui tahap penyortiran ekstra.
sumber
find /path/ -exec ...
dengan berjalan jauh lebih cepatfind /path/
untuk mendapatkan daftar file yang diurutkan terlebih dahulu.Anda tidak harus bergantung pada urutan keluaran tertentu dari
find
dan sebaliknya harus menggunakansort
dan cara lain untuk secara khusus mengontrol pesanan.sumber
Saya telah bekerja di UNIX / Linux sejak 1984/1991 masing-masing dan perintah pertama yang diajarkan kepada saya adalah find. Linux / GNU telah memasukkan hampir semua yang Anda butuhkan ke perintah find saat ini, jadi ikutilah.
Berikut adalah beberapa tips bermanfaat untuk menyortir hasil pencarian. Opsi -printf memberi Anda banyak opsi untuk mengaktifkan penyortiran dan presentasi info file yang lebih kompleks. Itu yang terbaik untuk masalah seperti ini. Mainkan dengan itu untuk melihat apa yang akan bekerja untuk Anda. Menggunakan -printf Anda dapat menyesuaikan dan membatasi hasil seperti yang Anda inginkan. Ini sedikit membantu ketika Anda perlu memposting proses hasilnya. Saya harap ini membantu seseorang.
Jika Anda menggunakan -l dan ingin mengurutkan berdasarkan nama file, bidang ke-11 adalah nama file sehingga Anda dapat melakukan hal berikut. Opsi sort -k dapat mengambil banyak bidang untuk mengurutkan juga.
temukan / path -l | semacam -k11
Jika Anda ingin kontrol kendali butir yang lebih baik berdasarkan tanggal / waktu dalam urutan naik atau turun, gunakan opsi "" printf. Lihat manual untuk lebih detail, tetapi berikut ini adalah contoh yang akan dicetak dengan pecahan detik sehingga sangat akurat.
CONTOH TANGGAL / WAKTU: 2016-09-17 + 12: 09: 57.9013929800
Cara lain untuk melakukan ini tanpa karakter dalam string tanggal / waktu adalah.
CONTOH TANGGAL / WAKTU: 20160917120013.8101685040
sumber