Mam katalogi tymczasowe pełne śmieci, wszystkie rozpoczynające się od __temp__
(np. __temp__user_uploads
), które chcę usunąć za pomocą funkcji czyszczenia. Moja funkcja próba jest uruchomienie:Jak mogę użyć polecenia `find` w systemie Linux, aby usunąć niepuste katalogi?
find . -name __temp__* -exec rm -rf '{}' \;
Jeśli uruchomić polecenie i istnieje wiele __temp__
katalogi (__temp__foo
i __temp__bar
), pojawia się komunikat:
find: __temp__foo: unknown option
Jeśli uruchomić komendę i tam jest tylko 1 __temp__
katalog (__temp__foo
), zostanie on usunięty i pojawia się komunikat:
find: ./__temp__foo: No such file or directory
Dlaczego polecenie nie działa, dlaczego jest niespójne, i jak mogę to naprawić?
Jako poprawa wydajności i szczelności, zakładając narzędzia GNU (ponieważ OP jest na Linuksie), naprawdę poleciłbym 'find. -maxdepth 1 -type d -name '__temp __ *' -print0 | xargs -0 rm -rf'. – pilcrow
+1 za sugerowanie xargs zamiast -exec –
@AshishKumar - dlaczego +1 dla xargs? Czy '-exec' nie jest dobrą cechą' find'? Pilcrow, dzięki za wyjaśnienie! – orokusaki