Usar xargs para construir un comando de búsqueda que excluya una lista de directorios de una variable de entorno

Usar xargs para construir un comando de búsqueda que excluya una lista de directorios de una variable de entorno

Sé cómo excluir ciertos directorios de find: find <path> ! -path <path to exclude>. Pero esto puede ser demasiado tedioso de escribir cuando necesito excluir muchos directorios o simplemente no se puede usar cuando la lista de directorios que necesito excluir no se conoce de antemano.

Entonces, digamos que tengo una lista de directorios almacenados en una variable. ¿Puedo utilizar xargspara construir un findcomando que excluya cada uno de estos directorios? ¿Si es así, cómo?

Respuesta1

Para el caso de variable 'simple'; tenga en cuenta que los directorios no pueden contener espacios en blanco, ya que eso es lo que los separa dentro de la variable.

excludes='dir1 dir2 dir3'
findexcl=
set -f
for p in $excludes
do
  findexcl="$findexcl ! -path $p"
done
echo find ... $findexcl ...

información relacionada