Czy istnieje polecenie usunięcia wszystkich plików w katalogu, który nie został zmodyfikowany w ciągu N dni? Muszę wyczyścić stare dzienniki.
Czy istnieje polecenie usunięcia wszystkich plików w katalogu, który nie został zmodyfikowany w ciągu N dni? Muszę wyczyścić stare dzienniki.
Odpowiedzi:
Spowoduje to usunięcie wszystkich plików starszych niż 5 dni, możesz też umieścić -name '*log'
tam plik, aby być bardziej precyzyjnym, i możesz też podać maxdepth
polecenie find.
find /some/dir -type f -mtime +5 -delete
/ some/dir/
wersję. :(
Z kwalifikatoramizsh
i (.m+n)
glob : .
wybiera tylko zwykłe pliki, m+n
wybiera pliki zmodyfikowane ponad n dni temu;
np. wyświetl listę plików w bieżącym katalogu, które zostały zmodyfikowane ponad 9 dni temu:
print -rl -- *(.m+9)
dodaj, D
aby dołączyć pliki kropek:
print -rl -- *(D.m+9)
lub jeśli chcesz powtórzyć (i np. wymienić tylko pliki kończące się na .log
):
setopt extendedglob
print -rl -- **/*.log(.m+9)
wymienić print -rl
ze rm
jeśli jesteś zadowolony z wyniku; chociaż możesz użyć, zargs
jeśli masz wiele plików (aby uniknąć zbyt długiej listy argumentów ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-ls
zamiast-delete
mieć pewność, że nie usunie niczego, co chcieliby zachować. Tak, mówiąc z doświadczenia tutaj.