使用 xargs 构造一个 find 命令,从环境变量中排除目录列表

使用 xargs 构造一个 find 命令,从环境变量中排除目录列表

我知道如何从find:中排除某些目录find <path> ! -path <path to exclude>。但是,当我需要排除很多目录时,或者当我需要排除的目录列表事先未知时,这可能太乏味而无法使用。

所以,假设我有一个存储在变量中的目录列表。我可以用来xargs构造一个find排除这些目录的命令吗?如果是这样,怎么办?

答案1

对于“简单”变量的情况;请注意,目录不能包含空格,因为这是在变量内分隔它们的原因。

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

相关内容