我写了这段代码来扫描目录中的文件比参考文件更新,同时排除特定的子目录。从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