Jak usunąć wszystkie pliki starsze niż 3 dni, gdy „Lista argumentów jest za długa”?


89

Mam katalog plików dziennika, który zawiera 82000 plików i katalogów (około pół na pół).

Muszę usunąć wszystkie pliki i katalogi starsze niż 3 dni.

W katalogu zawierającym 37000 plików mogłem to zrobić za pomocą:

find * -mtime +3 -exec rm {} \;

Ale przy 82000 plikach / katalogach pojawia się błąd:

/ usr / bin / find: Lista argumentów jest za długa

Jak mogę obejść ten błąd, aby usunąć wszystkie pliki / katalogi starsze niż 3 dni?


1
Czy próbowałeś find -mtime +3 -exec rm {} +?
— Gilles Quenot

1
Wierzę, że bieganie find * -mtime +3 |xargs rmrozwiązałoby ten problem.
— Mats Petersson

9
Myślę, że jedynym problemem jest find *. find .jest lepiej. Globowanie powłoki z rozszerzeniem *do ogromnej listy plików i katalogów.
— bezartowy hałas

@artlessnoise jest na miejscu.
— sjas

Odpowiedzi:


120

Aby usunąć wszystkie pliki i katalogi w bieżącym katalogu:

find . -mtime +3 | xargs rm -Rf

Lub alternatywnie, bardziej zgodnie z oryginalnym poleceniem PO:

find . -mtime +3 -exec rm -Rf -- {} \;

26
-1 Problem polega na tym, że gwiazda w „znajdź *”, rozwiązałeś go za pomocą polecenia „znajdź”. zamiast. Xargs wprowadza tutaj w błąd.
— Aleksandr Levchuk

7
@AleksandrLevchuk rozwiązuje ops problem i dlatego nie zasługują na downvote
— HD1

11
Pytanie: "find * -mtime +3 -exec rm {} \;" daje listę argumentów za długą. Odpowiedź: Użyj polecenia „find. -Mtime +3 -exec rm {} \;”
— Aleksandr Levchuk

2
Możesz dodać --po rm, na przykładfind . -mtime +3 -exec rm -- {} \;
— domen

8
Nikt nie powiedział, do czego --służy.
— Acumenus,

59

Można również użyć:

find . -mindepth 1 -mtime +3 -delete

Nie usuwać katalogu docelowego


4
Najlepsza odpowiedź, znacznie czystsza niż dzwonienie do rm (i prawdopodobnie bezpieczniejsza). Działa również dla podkatalogów.
— podstawowy6

16

Inne rozwiązanie pierwotnego pytania, zwł. przydatne, jeśli chcesz usunąć tylko NIEKTÓRE ze starszych plików w folderze, byłoby coś takiego:

find . -name "*.sess" -mtime +100 

i tak dalej… Cudzysłowy blokują symbole wieloznaczne powłoki, dzięki czemu można „znaleźć” miliony plików :)

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.