Muszę usunąć 200 000 plików (wszystkie) z folderu i nie chcę usuwać samego folderu.
przy użyciu rm pojawia się błąd „Zbyt długa lista argumentów”. Próbowałem coś zrobić z Xargsem, ale nie jestem facetem od powłoki, więc to nie działa:
find -name * | xargs rm -f
Odpowiedzi:
źródło
-delete
. Pozwala to również uniknąć problemów z plikami zawierającymi cytaty lub znaki nowej linii (chociaż można to-print0
naprawić za pomocą-0
opcji GNU find i GNU xarg ).xargs
tymczasemfind
ma-exec command {} +
składnię.Robisz wszystko dobrze. Problem stanowi „*” (powłoka rozszerza go na listę plików zamiast
find
). Właściwą składnią może być:(Ta ostatnia jest nieco mniej wydajna, ponieważ przekaże dłuższe nazwy
xargs
, ale prawie nie zauważysz :-))Alternatywnie możesz uciec przed swoim „*” w ten sposób (jednak w takim przypadku spróbuje również usunąć „.” I „..”; to nie jest biggie - dostaniesz tylko małe ostrzeżenie :-)):
Jeśli nazwy plików zawierają spacje, użyj tego:
źródło
Następujące polecenie usunie wszystkie pliki z bieżącego katalogu:
źródło
-name '*'
nie oznacza „wszystkich plików”. Pliki są mówione z:-type f
możesz spróbować
lub
źródło
Wyrazy uznania dla odpowiedzi ilościowych, oto kilka dodatków.
Jeśli chcesz usunąć pliki z określonym wzorcem nazwy, możesz to zapisać w ten sposób. Dodano także opcję -print, dzięki czemu można zobaczyć, co się dzieje, gdy pliki są usuwane.
Spowoduje to na przykład usunięcie wszystkich plików JPEG w moim katalogu.
źródło