![Usando xargs para construir um comando find que exclui uma lista de diretórios de uma variável de ambiente](https://rvso.com/image/83675/Usando%20xargs%20para%20construir%20um%20comando%20find%20que%20exclui%20uma%20lista%20de%20diret%C3%B3rios%20de%20uma%20vari%C3%A1vel%20de%20ambiente.png)
Eu sei como excluir certos diretórios de find
: find <path> ! -path <path to exclude>
. Mas isso pode ser muito tedioso para digitar quando preciso excluir muitos diretórios ou simplesmente não pode ser usado quando a lista de diretórios que preciso excluir não é conhecida com antecedência.
Então, digamos que eu tenha uma lista de diretórios armazenados em uma variável. Posso usar xargs
para construir um find
comando que exclua cada um desses diretórios? Se sim, como?
Responder1
Para o caso de variável 'simples'; observe que os diretórios não podem conter espaços em branco, pois é isso que os separa dentro da variável.
excludes='dir1 dir2 dir3'
findexcl=
set -f
for p in $excludes
do
findexcl="$findexcl ! -path $p"
done
echo find ... $findexcl ...