2016-10-25 10 views
-1

Findから除外するディレクトリのリストを除外しようとしています。このリストは定期的に更新する必要があるため、名前をファイルに入れる必要があります。findのディレクトリ除外リストを作成する

私はこれは私が出力をエコーし​​、その正しくフォーマットしようとしている

"find: \(: unknown primary or operator" 

になり、これまで

find $HOME $(printf " -not \(-path $HOME/%s -prune \) " $(cat $HOME/exclude)) -name "*[<>:/|?#%\\\\*]*" | while read -r file;do echo $file; done 

これを試してみましたので、それが検索でこれを行うことは可能でしょうか?

+0

「検索」の出力を「否定的」grepでフィルタリングするとどうなりますか。 grep -vFf excludeList.txt'?がんばろう。 – shellter

+0

おかげで、少量のファイルでうまくいくはずです。悲しいことに、まだすべてを解析しています。何千ものファイルがある特定のフォルダの解析を除外しています。 – rndy

+0

ファイルに何個のディレクトリをリストしますか? ) '$ HOME/exclude'?がんばろう。 – shellter

答えて

0

最後にいくつかの援助がありました。これはこれを行う方法の1つです

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 "*[<>:/|?#%\\\\*]*" 
関連する問題