![使用 xargs 建構一個 find 指令,從環境變數中排除目錄列表](https://rvso.com/image/83675/%E4%BD%BF%E7%94%A8%20xargs%20%E5%BB%BA%E6%A7%8B%E4%B8%80%E5%80%8B%20find%20%E6%8C%87%E4%BB%A4%EF%BC%8C%E5%BE%9E%E7%92%B0%E5%A2%83%E8%AE%8A%E6%95%B8%E4%B8%AD%E6%8E%92%E9%99%A4%E7%9B%AE%E9%8C%84%E5%88%97%E8%A1%A8.png)
我知道如何從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 ...