我正在尝试使用配置文件中提供的数组来排除find
中的目录列表。数组的一个简单示例如下:
excludedDirList2[0]='*.'
excludedDirList2[1]='node_modules'
我一直在使用-prune
和! -path
选项,但我想不出一种方法来动态读取数组,生成find
并使其实际工作。
有效但不能动态读取数组的命令示例
find $dir -type f -name "hidden.txt" ! -path "${excludedDirList[1]}" ! -path "${excludedDirList[0]}"
答案 0 :(得分:3)
如果可行,只需在数组的每个元素前面添加!
和-path
,然后将其传递给find
。
excludedDirList2=('*.' 'node_modules')
findargs=()
for i in "${excludedDirList2[@]}"; do
findargs+=('!' '-path' "$i")
done
find "$dir" -type f -name "hidden.txt" "${findargs[@]}"