Hapus file yang lebih lama dari 500 hari


10

Saya memiliki direktori dengan file dari tahun 2010 tahun .. Saya ingin menghapus semua file yang lebih lama dari 500 hari dan saya mencoba ini:

find /var/log/arc/* -type f -mtime +500 -delete {}\;      

Tapi saya mengerti:

-bash: /usr/bin/find: Argument list too long

Seperti yang saya tahu ini berarti ada terlalu banyak file dan findtidak dapat menanganinya. Tetapi bahkan jika saya menempatkan +20003+ tahun saya masih mendapatkan ini.

Apa yang saya lewatkan di sini?


Jawaban:


18

Anda hilang yang findtidak memerlukan daftar file sebagai input. Masalahnya adalah bahwa glob /var/log/arc/*memperluas terlalu banyak file. Namun, findakan muncul kembali ke subdirektori secara default, jadi tidak perlu menggunakan glob sama sekali:

find /var/log/arc/ -type f -mtime +500 -delete

-deleteadalah predikat tidak standar. Jika findimplementasi Anda tidak mendukungnya, Anda dapat menggunakan:

find /var/log/arc/ -type f -mtime +500 -exec rm -f {} +

sebagai gantinya.


Terima kasih tetapi sekarang dapat ini: find: invalid predicate -hapus'`
Garg

1
@Garg pertama, maaf, saya baru saja menyalin perintah Anda dan tidak melihat sintaks Anda salah. Tidak -deleteterima {}. Lihat pembaruan. Namun, pesan kesalahan Anda tampaknya menyarankan bahwa versi findAnda tidak mendukung -delete. Jika Anda tidak menggunakan GNU find(yang dalam banyak kasus Anda tidak akan melakukannya kecuali Anda menggunakan Linux), Anda harus menggunakannya -exec -rm {} \;.
terdon

Terima kasih. -exec rm {} \;lakukan triknya.
Garg

1
@hobbs saya tidak melihat mengapa tidak, -execyang didefinisikan oleh POSIX .
terdon

@ kesalahan kesalahan saya.
hobbs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.