Dosyaları yaşa göre silme


16

N gün içinde değiştirilmemiş bir dizindeki tüm dosyaları silme komutu var mı ? Bazı eski günlükleri temizlemem gerekiyor.

Yanıtlar:


24

Bu işlem 5 günden daha eski olan tüm dosyaları silecektir, -name '*log'daha kesin olması için oraya da koyabilirsiniz maxdepthve find komutunda da a belirtmek isteyebilirsiniz .

find /some/dir -type f -mtime +5 -delete


5
Akıllı sistem yöneticileri, -lsbunun -deleteistedikleri herhangi bir şeyi silmeyeceğinden emin olmak yerine, kuru çalışma yaparlar. Evet, buradaki deneyimden bahsetmişken.
Shadur

2
Deneyimden bahsetmişken, yollarını da kontrol ediyorlar. ya da değil, bir zamanlar / some/dir/sürümü yaptığımdan beri . :(
Hennes

3

İle zshve (.m+n) glob eleme : .Sadece normal dosyalar, seçer m+nseçer dosyaları birden değiştirilmiş n gün önce;
örneğin, geçerli dizinde 9 günden daha önce değiştirilmiş dosyaları listeleyin:

print -rl -- *(.m+9)

Dnokta dosyalarını eklemek için ekle :

print -rl -- *(D.m+9)

veya tekrarlamak istiyorsanız (ve yalnızca biten dosyaları listeliyorsanız .log):

setopt extendedglob
print -rl -- **/*.log(.m+9)

yerine print -rlbirlikte rmsize sonuçtan memnun iseniz; ancak zargsçok sayıda dosyanız varsa kullanmanız gerekebilir ( bağımsız değişkenler listesini çok uzun süre önlemek için ):

autoload zargs
zargs ./**/*(.m+9) -- rm
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.