Pastikan pwd Anda adalah direktori yang benar untuk menghapus file kemudian (dengan asumsi hanya karakter biasa dalam nama file):
ls -A1t | tail -n +11 | xargs rm
menyimpan 10 file terbaru. Saya menggunakan ini dengan 'gerakan' program kamera untuk menyimpan file pengambilan bingkai terbaru. Terima kasih atas semua jawaban selanjutnya karena Anda menunjukkan kepada saya cara melakukannya.
find adalah alat umum untuk tugas semacam ini :
find ./my_dir -mtime +10 -type f -delete
PENJELASAN
./my_dirdirektori Anda (ganti dengan milik Anda)-mtime +10lebih dari 10 hari-type fhanya file-deletetidak ada kejutan. Hapus untuk mengujifindAnda filter sebelum menjalankan seluruh perintah
Dan jaga ./my_dir itu ada untuk menghindari kejutan buruk!
Cara yang tepat untuk melakukan hal semacam ini adalah dengan logrotate .
Coba ini:
ls -t | sed -e '1,10d' | xargs -d '\n' rm
Ini harus menangani semua karakter (kecuali baris baru) dalam nama file.
Apa yang terjadi di sini?
ls -tdaftar semua file di direktori saat ini dalam urutan waktu modifikasi yang menurun. Yaitu, file yang paling baru dimodifikasi adalah yang pertama, satu nama file per baris.sed -e '1,10d'menghapus 10 baris pertama, yaitu 10 file terbaru. Saya menggunakan ini sebagai gantitailkarena saya tidak pernah ingat apakah saya memerlukantail -n +10atautail -n +11.xargs -d '\n' rmmengumpulkan setiap baris input (tanpa mengakhiri baris baru) dan meneruskan setiap baris sebagai argumen kerm.
Mengenai hal semacam ini, silakan bereksperimen di tempat yang aman.