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?
linux
file-io
resource-cleanup
Edward Tanguay
źródło
źródło
find -mtime +3 -exec rm {} +
?find * -mtime +3 |xargs rm
rozwiązałoby ten problem.find *
.find .
jest lepiej. Globowanie powłoki z rozszerzeniem*
do ogromnej listy plików i katalogów.Odpowiedzi:
Aby usunąć wszystkie pliki i katalogi w bieżącym katalogu:
Lub alternatywnie, bardziej zgodnie z oryginalnym poleceniem PO:
źródło
--
po rm, na przykładfind . -mtime +3 -exec rm -- {} \;
--
służy.Można również użyć:
Nie usuwać katalogu docelowego
źródło
Inne rozwiązanie pierwotnego pytania, zwł. przydatne, jeśli chcesz usunąć tylko NIEKTÓRE ze starszych plików w folderze, byłoby coś takiego:
i tak dalej… Cudzysłowy blokują symbole wieloznaczne powłoki, dzięki czemu można „znaleźć” miliony plików :)
źródło