Tendo problemas para excluir diretórios específicos dentro de um diretório pai específico

0

Estou usando o Amazon Linux, bash shell. Estou tentando escrever uma instrução que excluirá todos os diretórios filhos com o nome "target" em um diretório mestre específico. Eu gostaria de escrever coisas que, mesmo que os diretórios não existam, não há erros. Eu tentei o abaixo, mas estou com um erro

[jboss@mydevbox ~]$ find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -print0 | xargs rm -rf
xargs: Warning: a NUL character occurred in the input.  It cannot be passed through in the argument list.  Did you mean to use the --null option?

Qual é a melhor maneira de escrever o acima?

    
por Dave 25.04.2016 / 18:58

2 respostas

3

Se você estiver usando -print0 , use o -0 flag para xargs para ler os nomes corretamente.

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -print0 | xargs -0 rm -rf

alternadamente, se você tiver o GNU find , você pode usar o -delete flag, embora não funcione se os diretórios não estiverem vazios

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -delete

Ou, você também pode usar -exec com encontrar como

find ~/.jenkins/jobs/subco/workspace/myproject/ -name 'target' -exec rm -rf {} +
    
por 25.04.2016 / 19:04
0

Modern find (via POSIX, então o não-GNU find no OpenBSD suporta isso) pode fazer o trabalho necessário sem uma chamada para xargs via -exec command {} + .

find ... -exec rm -rf '{}' \+
    
por 25.04.2016 / 19:08

Tags