Uniksowa magia, czy usunąć wszystkie pliki .pyc z drzewa katalogów?

11

Czy istnieje szybki sposób na usunięcie wszystkich plików .pyc z drzewa katalogów?

interstar
źródło

Odpowiedzi:

28

Jeśli masz GNU find, to prawdopodobnie chcesz

find <directory name> -name '*.pyc' -delete

Jeśli potrzebujesz czegoś przenośnego, lepiej jest

find <directory name> -name '*.pyc' -exec rm {} \;

Jeśli szybkość jest bardzo ważna, a ty masz GNU find i GNU xargs

find <directory name> -name '*.pyc' -print0|xargs -0 -p <some number greater than 1> rm

Jest to jednak mało prawdopodobne, aby przyspieszyć, ponieważ będziesz głównie czekał na We / Wy.

Cian
źródło
perfekcyjnie, dzięki. To xargs, o którym zawsze zapominam
interstar
2
Na wypadek, gdy mam pliki ze spacjami w nazwach, przyzwyczaiłem się zawsze używać opcji -print0 i „xargs -0”.
Paul Tomblin,
Masz całkowitą rację, powinienem pomyśleć o tym pierwotnie., Zredagowany, aby to odzwierciedlić.
Cian
4
Możesz także bezpośrednio użyć „-delete” zamiast „-print0 | xargs -0 rm '. Ale to prawda, że ​​ta opcja nie jest dostępna we wszystkich wersjach „find”.
rolaf
6

za pomocą polecenia znajdź:

find /path/to/start -name '*.pyc' -exec rm -f {} \;
slubman
źródło
To za wolno. Używanie xargs jest szybsze lub jeśli twoja wersja find go obsługuje, zmień „ \;” na końcu na „ +”.
Wstrzymano do odwołania.
1
Może być trochę wolniejszy - uruchamia „rm” jeden raz dla każdego pliku, zamiast je grupować - ale jest to najbardziej przenośny sposób na zrobienie tego. OP nie powiedział, jakiego rodzaju unixa używa, a Solaris find nadal nie ma funkcji -print0.
Kenster,
1
+1, OP powiedział, że unix to nie Linux, to najlepsze przenośne rozwiązanie.
theotherreceive
Myślę, że to rozwiązanie jest jedyną możliwością usuwania ton plików, jeśli się nie mylę, użycie xargs może pozostawić w wierszu polecenia zbyt długi błąd. +1, to mój wybór również od lat.
drAlberT
Jeśli używasz makefile do zbudowania swojego projektu, możesz chcieć dodać to do docelowego „czystego”.
Tom Newton,
1

cd na początek drzewa katalogów, a następnie:

odnaleźć . -nazwa „* .pyc” | xargs rm -f

Garry Harthill
źródło
Nie jest konieczne cd, wystarczy umieścić główny katalog w findpoleceniu (zamiast „kropki”).
Wstrzymano do odwołania.
To wcale nie obsługuje spacji.
Cian