为find创建目录排除列表

时间:2016-10-25 20:22:19

标签: bash find

我试图排除要从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?

执行此操作

1 个答案:

答案 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 "*[<>:/|?#%\\\\*]*"