使用 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 ...

相關內容