我寫了這段代碼來掃描目錄中的文件比參考文件更新,同時排除特定的子目錄。從shell腳本中的變量運行命令
#!/bin/bash
dateMarker="date.marker"
fileDate=$(date +%Y%m%d)
excludedDirs=('./foo/bar' './foo/baz' './bar/baz')
excludedDirsNum=${#excludedDirs[@]}
for ((i=0; i < $excludedDirsNum; i++)); do
myExcludes=${myExcludes}" ! -wholename '"${excludedDirs[${i}]}"*'"
done
find ./*/ -type f -newer $dateMarker $myExcludes > ${fileDate}.changed.files
然而排除只是被忽略。當我「echo $ myExcludes」時,它看起來很好,而且如果我用echo命令的輸出替換最後一行中的「$ myExcludes」,腳本的行爲就像預期的一樣。我想這是某種引用/轉義錯誤,但我一直無法消除它。
非常感謝您的回答。它像一個魅力,而不需要-prune。 – raphinesse 2010-07-01 07:32:06