Saya menulis perintah di bawah ini untuk menghapus semua file yang lebih lama dari 7 hari, tetapi tidak berfungsi:
find /media/bkfolder/ -mtime +7 -name'*.gz' -exec rm {} \;
Bagaimana saya bisa menghapus file-file ini?
command-line
delete
find
rm
Malihe Pakyari
sumber
sumber
name
dan'*.gz'
.Jawaban:
Seperti @ Jo menunjukkan Anda melewatkan ruang antara
name
dan'*.gz'
; juga untuk mempercepat perintah penggunaan-type f
pilihan untuk menjalankan perintah pada f iles saja.Jadi perintah tetapnya adalah:
Penjelasan:
find
: perintah unix untuk mencari f iles / d irectories / l tinta dan lain-lain/path/to/
: direktori untuk memulai pencarian Anda.-type f
: hanya menemukan file.-name '*.gz'
: daftar file yang diakhiri dengan.gz
.-mtime +7
: hanya mempertimbangkan yang dengan waktu modifikasi lebih dari 7 hari.-execdir ... \;
: untuk setiap hasil yang ditemukan, lakukan perintah berikut di...
.rm -- '{}'
: hapus file; yang{}
bagian mana hasil find akan diganti menjadi dari bagian sebelumnya.--
berarti parameter perintah akhir menghindari kesalahan prompt untuk file-file yang dimulai dengan tanda hubung .Atau, gunakan:
Dari manusia menemukan :
Yang sedikit lebih efisien, karena berjumlah:
sebagai lawan:
seperti pada
-exec
metode.Sebuah alternatif dan juga lebih cepat perintah menggunakan exec ini
+
terminator bukan\;
:Perintah ini akan berjalan
rm
hanya sekali di akhir daripada setiap kali file ditemukan dan perintah ini hampir secepat menggunakan-delete
opsi seperti berikut di modernfind
:sumber
-delete
pada akhirnya? Mengapa mengacaukan dengan+
atau\;
?Hati-hati menghapus file dengan find. Jalankan perintah dengan -l untuk memeriksa apa yang Anda hapus
find /media/bkfolder/ -mtime +7 -name '*.gz' -ls
. Kemudian tarik perintah dari histori dan tambahkan-exec rm {} \;
Batasi kerusakan yang ditemukan oleh perintah find. Jika Anda ingin menghapus file hanya dari satu direktori,
-maxdepth 1
cegah cari dari menelusuri subdirektori atau dari mencari sistem lengkap jika Anda salah ketik/media/bkfolder /
.Batas lain yang saya tambahkan adalah argumen nama yang lebih spesifik seperti
-name 'wncw*.gz'
, menambahkan waktu yang lebih baru-mtime -31
, dan mengutip direktori yang dicari. Ini sangat penting jika Anda mengotomatiskan pembersihan.find "/media/bkfolder/" -maxdepth 1 -type f -mtime +7 -mtime -31 -name 'wncw*.gz' -ls -exec rm {} \;
sumber