Unix magic, exclua todos os arquivos .pyc de uma árvore de diretórios?


11

Existe uma maneira rápida de excluir todos os arquivos .pyc de uma árvore de diretórios?

Respostas:


28

Se você tem o GNU find, provavelmente deseja

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

Se você precisar de algo portátil, será melhor usar

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

Se a velocidade é muito importante e você tem o GNU find e o GNU xargs, então

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

No entanto, é improvável que isso acelere, devido ao fato de que você estará aguardando a E / S.


perfeito ... obrigado. É o xargs eu sempre esqueço
Interstar

2
Caso eu tenha arquivos com espaços nos nomes, adquiri o hábito de sempre usar -print0 e "xargs -0".
Paul Tomblin

Você está inteiramente certo, deveria ter pensado nisso originalmente., Editado para refletir isso.
Cian

4
Você também pode usar diretamente '-delete' em vez de '-print0 | xargs -0 rm '. Mas é verdade que esta opção não está presente em todas as versões do 'find'.
rolaf

6

usando o comando find:

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

Isso é muito lento. O uso do xargs é mais rápido ou, se a sua versão do find suportar, altere " \;" no final para " +".
Pausado até novo aviso.

1
Pode ser um pouco mais lento - ele executa "rm" uma vez para cada arquivo em vez de colocá-los em lote - mas é a maneira mais portátil de fazer isso. O OP não disse que tipo de unix ele estava usando, e o Solaris ainda não possui o recurso -print0.
Kenster

1
+1, OP disse unix não linux, esta é a melhor solução portátil.
theotherreceive

Eu acho que esta solução é a única permissão para remover toneladas de arquivos, se eu não estiver errado usando xargs pode deixar em um erro de linha de comando por muito tempo. +1, também é minha escolha há anos.
drAlberT

Se você estiver usando um makefile para criar seu projeto, adicione-o ao destino "clean".
7119 Tom Newton

1

cd para o início da árvore de diretórios:

encontrar . -name '* .pyc' | xargs rm -f


Não é necessário cd, basta colocar o diretório superior no findcomando (no lugar de "ponto").
Pausado até novo aviso.

Isso não lida com espaços.
Cian
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.