Unix magic, cancella tutti i file .pyc da un albero di directory?


11

Esiste un modo rapido per eliminare tutti i file .pyc da un albero di directory?

Risposte:


28

Se hai GNU find, probabilmente lo desideri

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

Se hai bisogno di qualcosa di portatile, allora stai meglio

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

Se la velocità è un grosso problema e hai GNU find e GNU xargs allora

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

È improbabile, tuttavia, che ciò acceleri molto, a causa del fatto che ti aspetterò principalmente sull'I / O.


perfetto grazie. Sono gli xarg che dimentico sempre
interstar

2
Nel caso avessi file con spazi nei nomi, ho preso l'abitudine di usare sempre -print0 e "xargs -0".
Paul Tomblin,

Hai perfettamente ragione, avresti dovuto pensarci in origine., Modificato per riflettere quello.
Cian,

4
Puoi anche usare direttamente '-delete' invece di '-print0 | xargs -0 rm '. Ma è vero che questa opzione non è presente in tutte le versioni di 'find'.
rolaf,

6

usando il comando trova:

find /path/to/start -name '*.pyc' -exec rm -f {} \;

È troppo lento. L'uso di xargs è più veloce o se la tua versione di find lo supporta, modifica " \;" alla fine in " +".
In pausa fino a ulteriore avviso.

1
Potrebbe essere un po 'più lento - esegue "rm" una volta per ogni file invece di raggrupparli in batch - ma è il modo più portatile per farlo. L'OP non ha indicato il tipo di unix che stava usando e Solaris non ha ancora la funzione -print0.
Kenster,

1
+1, OP ha detto unix non Linux, questa è la migliore soluzione portatile.
theotherreceive

Penso che questa soluzione sia l'unica che consente di rimuovere tonnellate di file, se non sbaglio l'uso di xargs può lasciare un errore troppo lungo nella riga di comando. +1, è la mia scelta anche da anni.
drAlberT,

Se stai usando un makefile per costruire il tuo progetto, potresti voler aggiungere questo alla destinazione "clean".
Tom Newton,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.