Kombinasi finddan lsberfungsi dengan baik untuk
- nama file tanpa baris baru
- jumlah file tidak terlalu besar
- nama file tidak terlalu panjang
Solusinya:
find . -name "my-pattern" -print0 |
xargs -r -0 ls -1 -t |
head -1
Mari kita jabarkan:
Dengan findkita dapat mencocokkan semua file menarik seperti ini:
find . -name "my-pattern" ...
lalu menggunakan -print0kita bisa memberikan semua nama file dengan aman ke yang lsseperti ini:
find . -name "my-pattern" -print0 | xargs -r -0 ls -1 -t
findparameter dan pola pencarian tambahan dapat ditambahkan di sini
find . -name "my-pattern" ... -print0 | xargs -r -0 ls -1 -t
ls -takan mengurutkan file berdasarkan waktu modifikasi (terbaru terlebih dahulu) dan mencetaknya satu per satu. Anda dapat menggunakannya -cuntuk mengurutkan berdasarkan waktu pembuatan. Catatan : ini akan pecah dengan nama file yang mengandung baris baru.
Akhirnya head -1memberi kami file pertama dalam daftar diurutkan.
Catatan: xargs gunakan batas sistem untuk ukuran daftar argumen. Jika ukuran ini melebihi, xargsakan memanggil lsbeberapa kali. Ini akan mematahkan penyortiran dan mungkin juga hasil akhir. Lari
xargs --show-limits
untuk memeriksa batas pada sistem Anda.
Catatan 2: gunakan find . -maxdepth 1 -name "my-pattern" -print0jika Anda tidak ingin mencari file melalui subfolder.
Catatan 3: Seperti yang ditunjukkan oleh @starfry - -rargumen untuk xargsmencegah panggilan ls -1 -t, jika tidak ada file yang cocok dengan find. Terima kasih atas sarannya.