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?

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.


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 {} \;

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.