500 günden eski dosyaları sil


10

2010 yılından itibaren dosyaları ile dizin var .. 500 günden eski tüm dosyaları silmek istiyorum ve bunu denedim:

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

Ama bunu anladım:

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

Bildiğim gibi bu çok fazla dosya olduğu ve findbunları işleyemediği anlamına geliyor . Ama +20003 + yıl olan koymak bile ben hala bunu alıyorum.

Burada eksik olan ne?


Yanıtlar:


18

findGiriş olarak bir dosya listesi gerektirmeyen eksik . Sorun, glob /var/log/arc/*çok fazla dosyaya genişlemesidir. Ancak, findvarsayılan olarak alt dizinlere geri çekilecektir, bu nedenle glob'u kullanmaya gerek yoktur:

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

-deletestandart olmayan bir yüklemdir. Senin Eğer finduygulama bu özelliği desteklemiyorsa, şunları kullanabilirsiniz:

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

yerine.


Teşekkürler ama şimdi bunu aldım: find: invalid predicate -sil ''
Garg

1
@ Önce Garg, üzgünüm, sadece komutunu kopyaladım ve sentaksının yanlış olduğunu fark etmedim. -deleteAlmaz {}. Güncellemeye bakın. Ancak, hata mesajınız, sürümünüzün finddesteklenmediğini gösteriyor -delete. GNU kullanmıyorsanız find(Linux kullanmadığınız sürece çoğu durumda kullanmazsınız), -exec -rm {} \;bunun yerine kullanmanız gerekir .
terdon

Teşekkür ederim. -exec rm {} \;iş görmek.
Garg

1
, neden @hobbs görmüyorum -execolan POSIX tarafından tanımlanmış .
terdon

@terdon benim hatam.
ocaklar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.