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ć maxdepthpolecenie find.
find /some/dir -type f -mtime +5 -delete
/ some/dir/wersję. :(
Z kwalifikatoramizsh i (.m+n) glob : .wybiera tylko zwykłe pliki, m+nwybiera 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, Daby 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 -rlze rmjeśli jesteś zadowolony z wyniku; chociaż możesz użyć, zargsjeśli masz wiele plików (aby uniknąć zbyt długiej listy argumentów ):
autoload zargs
zargs ./**/*(.m+9) -- rm
-lszamiast-deletemieć pewność, że nie usunie niczego, co chcieliby zachować. Tak, mówiąc z doświadczenia tutaj.