Nie zapomnij spojrzeć na programy takie jak trash-cli, abyś mógł cofnąć usunięcie zamiast używać rm. code.google.com/p/trash-cli (we wszystkich poniższych odpowiedziach po prostu zamienisz „rm” na „kosz”).
Odpowiedzi:
136
Usuń wszystkie pliki * .swp z bieżącego katalogu, użyj findpolecenia w jednej z następujących form:
find . -name \*.swp -type f -delete
-deleteOpcja oznacza, znaleźć będzie bezpośrednio usunąć pliki ogłoszeń. To najlepiej pasuje do rzeczywistego pytania OP.
Za -type fpomocą metody find można przetwarzać tylko pliki.
Opcja -execpozwala znaleźć, aby wykonać dowolne polecenie dla pliku. Pierwszy wariant uruchamia polecenie raz na plik, a drugi uruchamia jak najmniej poleceń, zastępując {}możliwie jak najwięcej parametrów.
Pipowanie danych wyjściowych xargsjest używane z bardziej złożonych poleceń dla pliku niż jest to możliwe w przypadku -exec. Ta opcja -print0mówi, findaby oddzielić dopasowania z ASCII NULL zamiast nowej linii, i -0mówi, xargsże należy oczekiwać danych wejściowych oddzielonych przez NULL. Dzięki temu konstrukcja potoku jest bezpieczna dla nazw plików zawierających białe znaki.
Po znalezieniu samodzielnego usunięcia usuń wszelkie ryzyko związane z miejscem osadzonym w nazwie pliku ... Aby zwiększyć bezpieczeństwo, rozważ dodanie -type ftylko dla plików.
Do wyszukiwania w moim katalogu domowym (i używania GNU „find” i „xargs”) użyłbym:
find $HOME -name '*.swp' -print0 | xargs -0 rm -f
Użycie „ -print0” i „ -0” oznacza, że nazwy będą rozdzielane znakami ASCII NUL „\ 0”, a to będzie obsługiwać ścieżki plików ze spacjami itp. W nazwach. Jeśli uważasz, że możesz mieć katalogi (lub pliki urządzeń, FIFO lub inne nie-pliki) w katalogu kończącym się na „.swp”, możesz dodać -type fopcję „znaleźć”. Jeśli masz tylko katalogi, powyższe polecenie nie usunie ich głośno.
Odpowiedzi:
Usuń wszystkie pliki * .swp z bieżącego katalogu, użyj
find
polecenia w jednej z następujących form:find . -name \*.swp -type f -delete
-delete
Opcja oznacza, znaleźć będzie bezpośrednio usunąć pliki ogłoszeń. To najlepiej pasuje do rzeczywistego pytania OP.Za
-type f
pomocą metody find można przetwarzać tylko pliki.find . -name \*.swp -type f -exec rm -f {} \;
find . -name \*.swp -type f -exec rm -f {} +
Opcja
-exec
pozwala znaleźć, aby wykonać dowolne polecenie dla pliku. Pierwszy wariant uruchamia polecenie raz na plik, a drugi uruchamia jak najmniej poleceń, zastępując{}
możliwie jak najwięcej parametrów.find . -name \*.swp -type f -print0 | xargs -0 rm -f
Pipowanie danych wyjściowych
xargs
jest używane z bardziej złożonych poleceń dla pliku niż jest to możliwe w przypadku-exec
. Ta opcja-print0
mówi,find
aby oddzielić dopasowania z ASCII NULL zamiast nowej linii, i-0
mówi,xargs
że należy oczekiwać danych wejściowych oddzielonych przez NULL. Dzięki temu konstrukcja potoku jest bezpieczna dla nazw plików zawierających białe znaki.Zobacz
man find
więcej szczegółów i przykładów.źródło
find . -name '*.swp' -delete
Po znalezieniu samodzielnego usunięcia usuń wszelkie ryzyko związane z miejscem osadzonym w nazwie pliku ... Aby zwiększyć bezpieczeństwo, rozważ dodanie
-type f
tylko dla plików.źródło
bash 4.0
źródło
Do wyszukiwania w moim katalogu domowym (i używania GNU „find” i „xargs”) użyłbym:
Użycie „
-print0
” i „-0
” oznacza, że nazwy będą rozdzielane znakami ASCII NUL „\ 0”, a to będzie obsługiwać ścieżki plików ze spacjami itp. W nazwach. Jeśli uważasz, że możesz mieć katalogi (lub pliki urządzeń, FIFO lub inne nie-pliki) w katalogu kończącym się na „.swp”, możesz dodać-type f
opcję „znaleźć”. Jeśli masz tylko katalogi, powyższe polecenie nie usunie ich głośno.źródło