GNU/Linux >> Belajar Linux >  >> Linux

Skrip Shell untuk menghitung file, lalu hapus file terlama

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 menguji find 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 ganti tail karena saya tidak pernah ingat apakah saya memerlukan tail -n +10 atau tail -n +11 .
  • xargs -d '\n' rm mengumpulkan setiap baris input (tanpa mengakhiri baris baru) dan meneruskan setiap baris sebagai argumen ke rm .

Mengenai hal semacam ini, silakan bereksperimen di tempat yang aman.


Linux
  1. Menentukan Jalur Ke Skrip Shell Bersumber?

  2. Shell Script:Menyortir File Ke Direktori Dan Subdirektori?

  3. Bagaimana Menghitung Jumlah File Dalam Sebuah Direktori Dan Menghapus Yang Terlama Jika Jumlahnya Melebihi 5?

  1. Arti dari $? Dalam Skrip Shell?

  2. Bagaimana cara ftp dan Mengunduh file dari Skrip Shell UNIX?

  3. Shell Script untuk mencetak piramida Bintang

  1. Menjalankan skrip shell secara paralel

  2. Direktori skrip Shell saat ini?

  3. Apakah ada program/skrip untuk memodifikasi file .conf?