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.