find - exec para remover diretórios com um dólar [duplicado]

1

Em diretórios do repositório local do maven com nome do dólar - propriedades não resolvidas ? Eu descrevi como acabei com algumas dezenas de diretórios que possuem um cifrão em seu nome de arquivo.

Eu tentei me livrar deles com o comando:

find . -type d -name "*\$*" -exec rm -rf {} \;

que deu uma mensagem de erro para cada diretório. Mas os diretórios e seu conteúdo foram embora nunca.

Então, eu tentei novamente as coisas em /tmp :

mkdir "\$adir"
find . -type d -name "*\$*" -exec rm -rf {} \;

e novamente recebeu um erro

find: ./$adir: No such file or directory

Como os arquivos podem ser removidos sem esse aviso?

    
por Wolfgang Fahl 21.09.2018 / 15:24

1 resposta

6

Isso acontece porque find executa rm -rf em cada diretório correspondente e tenta descer no diretório, mas acabou.

Para evitar isso e não receber o aviso correspondente, você deve informar find para remover os diretórios, para que ele não tente processá-los ainda mais:

find . -type d -name "*\$*" -exec rm -rf {} \; -prune

Como rm pode processar vários diretórios, você pode dizer a find para excluir vários diretórios por vez:

find . -type d -name "*\$*" -exec rm -rf {} + -prune
    
por 21.09.2018 / 15:28

Tags