exclui recursivamente todos os arquivos, diretórios vazios e diretórios com arquivos de vários nomes no diretório atual, incluindo o diretório atual

0

Estou tentando excluir todos os arquivos * .pyc e pycache , e quaisquer outros arquivos tontos que os idiomas precisem executar e que eu não quero ver. O mais próximo que eu cheguei é

sudo rm -rf **/*__pycache__

resposta, que não funciona no fundo do caminho, e

sudo rm -R -f {__pycache__,.*.pyc}

que não funcionou na pasta pycache .

webapi/__pycache__
webapi/cool_app/__pycache__
webapi/cool_app/bad_file.pyc
webapi/cool_app/keep_this_awesomeness.py
webapi/cool_app/sweet_folder/__pycache__
webapi/cool_app/sweet_folder/bad_file.pyc
webapi/cool_app/sweet_folder/keep_this_awesomeness.py

Apenas

webapi/cool_app/keep_this_awesomeness.py 
webapi/cool_app/sweet_folder/keep_this_awesomeness.py

permanecem.

    
por codyc4321 25.08.2016 / 22:01

3 respostas

2
find . \( -name __pycache__ -o -name "*.pyc" \) -delete
    
por 25.08.2016 / 22:05
3

Se o seu shell suporta, você pode fazer a travessia recursiva com o próprio shell e usar rm para remover os arquivos.

Por exemplo, na opção bash , globstar shell permite que o padrão de glob ** corresponda a qualquer profundidade do subdiretório e também é possível usar operadores regulares de globbing para corresponder aos arquivos.

No seu caso:

rm **/{*.pyc,__pycache__}

faria.

Primeiro, ative globstar :

shopt -s globstar
    
por 25.08.2016 / 22:45
0

No seu caso, você também pode fazer

find . -name "__pycache__" -o -name "*.pyc" | xargs rm -rf

Feito apenas com comandos incorporados. Isso evita que você habilite o globstar.

    
por 26.08.2016 / 00:12