Usuń pliki starsze niż jeden rok w systemie Linux

18

Do tego czasu wiele plików jest nadal w moim systemie i już ich nie potrzebuję, więc jak usunąć wszystkie pliki, które mają co najmniej jeden rok?

Maythux
źródło

Odpowiedzi:

34

Możesz to zrobić za pomocą tego polecenia

find /path/to/files* -mtime +365 -exec rm {} \;

Niektórzy wyjaśniają

/path/to/files* jest ścieżką do plików.

-mtimesłuży do określenia, ile dni ma dany plik. +365 znajdzie pliki starsze niż 365 dni, czyli jeden rok

-exec pozwala przekazać polecenie takie jak rm.


Edytuj Dzięki @Oli note -> możesz to zrobić:

find /path/to/files* -mtime +365 -delete
Maythux
źródło
7
Powinieneś zawsze cytować {}w -exec(tak czyta -exec rm "{}" \;). To gwarantuje, że spacje są obsługiwane poprawnie ... I możesz po prostu użyć -deletefunkcji zamiast -exec.
Oli
1
@Oli Huh ??? (To, co powiedziałeś, nie może mieć racji, biorąc pod uwagę, że skorupa zmienia "{}"się {}przed przekazaniem jej find; następnie findzastępuje ją. Cytowanie {}jest sugerowane w przypadku, {a }oni sami mogą czasem być traktowani specjalnie przez powłokę - która nie ma nic do zrobić z pustymi spacjami. I często {}nie trzeba tego cytować. Nie mogę wymyślić żadnej sytuacji, przynajmniej przywołując find z powłoki w stylu Bourne'a, gdy {}nic w środku nie wyglądałoby na kłótnię trzeba zacytować. Czy możesz?)
Eliah Kagan
1
@EliahKagan Tak, okazuje się, że finduchwyty uciekają dla siebie, ale nie jest to zły nawyk podczas pisania skryptów. To nie boli
Oli
2
@Oli Ale to nie pomaga, nawet w zasadzie. Jeśli findnie poradzi sobie z ucieczką, "{}"nadal będzie miał taki sam efekt, jak - po {}prostu nie zadziała, zamiast obu. To {}i "{}"zachowuj się tak samo nie jest - i nie może być - ze względu na jakąś specjalną cechę znalezienia. Mylenie tego, co jest rozszerzane przez powłokę z tym, co jest rozszerzane przez inny program, jest złym nawykiem. Wszyscy popełniamy ten błąd od czasu do czasu, ale nadal jest to błąd - nie jest to najlepsza praktyka. (Można jeszcze zacytować, {}aby pomóc ludziom zrozumieć, że nie jest to wzorzec rozwijania nawiasów klamrowych, ale nie ma to związku z dzieleniem słów.)
Eliah Kagan,