Use a opção -prune
para pular esse diretório
find ~/.jenkins/jobs/subco -path ~/.jenkins/jobs/subco/myapp -prune -o -name '*.jar' -exec rm -r {} +
Estou usando o shell bash. Eu tenho este comando para excluir todos os arquivos JAR dentro de um diretório particular
find ~/.jenkins/jobs/subco/ -name '*.jar' -print0 | xargs -0 -r rm
No entanto, quero modificar o acima para que ele exclua todos os arquivos JAR, exceto aqueles dentro de “~ / .jenkins / jobs / subco / myapp”. Como modifico o comando acima para excluir a remoção de arquivos JAR desse diretório específico durante a remoção de todos os outros?
Tente:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -print0 | ...
)
Adicionando -type f
para restringir a condição, desde quando você deseja corresponder apenas aos arquivos JAR. Além disso, você usou -print0
, é provável que seu find
suporte -delete
, para que você possa usar:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -delete
)
POSIXly:
(
cd ~/.jenkins/jobs/subco
find . -path ./myapp -prune -o -type f -name '*.jar' -exec rm -f {} +
)
Com o GNU find, você pode usar -execdir
para evitar -exec
race condition , veja também algumas considerações de segurança no GNU encontrar manual .
Você sempre deve usar -delete
quando estiver disponível.