Saya memiliki direktori yang berisi banyak file (seperti log untuk setiap hari sepanjang tahun). Saya ingin menghapus semua file yang dibuat sebelum katakanlah 22/11. Bagaimana saya bisa mencapainya? Haruskah saya gunakan find
maka exec -rm
? Saya menggunakan ksh.
26
Jawaban:
Menggunakan
find
masih merupakan cara yang disukai untuk menghapus file. Lihat http://mywiki.wooledge.org/UsingFind untuk lebih lanjut.Salah satu cara untuk melakukan ini adalah membuat file dengan cap waktu di dalamnya. misalnya
Sekarang hapus file-file GNU
find
(dengan asumsi dalam direktori saat ini) yang cocok dengan cap waktu misalnya:atau bukan GNU find
sumber
type -f
membatasi aksi hanya pada file.Dengan GNU atau BSD
find
s:Perhatikan bahwa ini memeriksa waktu modifikasi terakhir dari file. Pada beberapa BSD, Anda dapat menggunakan
-newerBt
di tempat-newermt
untuk memeriksa inode file itu lahir waktu jika tersedia sebagai gantinya.sumber
contoh:
Dalam hal ini akan menghapus semua file yang dimulai dengan "ORA_XEO" dengan lebih dari 15 hari.
sumber
rm -rf
, perintah pertama akan menghapus semua yang ada di direktori yang lebih tua dari 15 hari itu. (Juga, mengapa tanda kurung ada di sekitar-name
?)example.jar
- itu akan dihapusexample.cp
- itu akan dihapusexample.tar
- itu tidak akan dihapusfind /path/to/directory/ -mtime +<number of days> \( -name '*.jar' -o -name '*.cp' \) -name 'ex*' -exec rm -rf {} \;
find
Anda harus menggunakan-daystart
pengubah untuk memaksa-mtime
nilai ke tengah malam.