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_dir
direktori Anda (ganti dengan milik Anda)-mtime +10
lebih dari 10 hari-type f
hanya file-delete
tidak ada kejutan. Hapus untuk mengujifind
Anda 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 -t
daftar 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 gantitail
karena saya tidak pernah ingat apakah saya memerlukantail -n +10
atautail -n +11
.xargs -d '\n' rm
mengumpulkan setiap baris input (tanpa mengakhiri baris baru) dan meneruskan setiap baris sebagai argumen kerm
.
Mengenai hal semacam ini, silakan bereksperimen di tempat yang aman.