我试图排除要从Find中排除的目录列表。此列表需要定期更新,因此需要将名称放在文件中。
所以到目前为止我已经尝试了这个
find $HOME $(printf " -not \( -path $HOME/%s -prune \) " $(cat $HOME/exclude)) -name "*[<>:/|?#%\\\\*]*" | while read -r file;do echo $file; done
这导致
"find: \(: unknown primary or operator"
我已尝试回显输出及其格式正确,是否可以使用Find?
执行此操作答案 0 :(得分:0)
好的,最后得到了一些帮助。所以这是一种做法
SUPPORT_PATH="$HOME/Library/Application Support/App"
EXCLUDE_FILE="exclude"
defexcludefolder=".Cache"
def_opts=( -not "(" -path "$HOME/$defexcludefolder" -prune ")" )
#add defaults to exclusion list
exclusion_list=("${def_opts[@]}")
while IFS= read -r line; do
user_opts=( -not "(" -path "$HOME/$line" -prune ")" )
exclusion_list+=("${user_opts[@]}")
user_opts=()
done < <(grep "" "$SUPPORT_PATH/$EXCLUDE_FILE")
find $HOME "${exclusion_list[@]}" -name "*[<>:/|?#%\\\\*]*"