Saya punya direktori file log yang memiliki 82000 file dan direktori di dalamnya (sekitar setengah dan setengah).
Saya perlu menghapus semua file dan direktori yang lebih lama dari 3 hari.
Di direktori yang memiliki 37000 file di dalamnya, saya dapat melakukan ini dengan:
find * -mtime +3 -exec rm {} \;
Tetapi dengan 82000 file / direktori, saya mendapatkan error:
/ usr / bin / find: Daftar argumen terlalu panjang
Bagaimana cara mengatasi kesalahan ini sehingga saya dapat menghapus semua file / direktori yang lebih lama dari 3 hari?
linux
file-io
resource-cleanup
Edward Tanguay
sumber
sumber
find -mtime +3 -exec rm {} +
?find * -mtime +3 |xargs rm
akan menyelesaikan masalah itu.find *
.find .
lebih baik. Shell globing dengan memperluas*
ke daftar file dan direktori yang sangat besar.Jawaban:
Untuk menghapus semua file dan direktori dalam direktori saat ini :
Atau sebagai alternatif, lebih sesuai dengan perintah asli OP:
sumber
--
setelah rm, sepertifind . -mtime +3 -exec rm -- {} \;
--
.Bisa juga menggunakan:
Untuk tidak menghapus direktori target
sumber
Solusi lain untuk pertanyaan awal, esp. berguna jika Anda hanya ingin menghapus BEBERAPA file lama dalam sebuah folder, akan seperti ini:
dan seterusnya .. Quotes block shell wildcard, sehingga memungkinkan Anda untuk "menemukan" jutaan file :)
sumber