Jak usunąć pliki zmodyfikowane między poszczególnymi datami?

12

Jak w temacie: Chciałbym usunąć pliki z katalogu, który został zmodyfikowany w określonym zakresie dat. Jak mogę to zrobić ?

Patryk
źródło

Odpowiedzi:

18

Polecenie GNU findjest właściwą drogą. Na przykład, aby usunąć wszystkie pliki w bieżącym katalogu między 1 a 5 sierpnia, możesz użyć następującego polecenia

find . -maxdepth 1 -type f -newermt 2011-08-01 ! -newermt 2011-08-06 -delete

Lepiej wykonać polecenie bez -deleteakcji, po pierwsze, aby wyświetlić listę zainteresowanych plików (dobrym zamiennikiem może być -lsutworzenie listy podobnej do ls).

Usunięcie -maxdepth 1specyfikacji spowoduje również przejście do wszystkich podkatalogów.

Możesz także określić godziny, na przykład

find . -maxdepth 1 -type f -newermt '2011-08-01 10:01:59' \
                         ! -newermt '2011-08-06 23:01:00' -delete

Ostrzegamy, aby nie usuwać pojedynczych cudzysłowów, które chronią spacje między datą a godziną.

Postać !jest zaprzeczeniem, należy ją przeczytać: nowsza niż ta data, ale nie nowsza niż ta inna data.

enzotib
źródło
Dzięki za odpowiedź. Czy mogę również użyć czegoś, aby wybrać zakres godzin? A co to jest „!” używany do ?
Patryk
To !nie jest. W tym przykładzie: nie nowszy niż 2011-08-06.
con-f-use
@lordmonkey: zobacz moją edycję w odpowiedzi
enzotib
3
+1. Nie wiedziałem - usuń orzeczenie. Może to nie jest potrzebne, ale dodam -type f.
Michał Šrajer
@ Michał Šrajer: dobre wskazówki -type f, zapomniałem o tym. To -deletechyba rozszerzenia GNU.
enzotib