特定の文字列を含むディレクトリを検索しています(その文字列がある場所とファイルのすべてのインスタンスを確認するため)。ところで、特定のファイルを検索から除外したいと思います。
これはどうしたの?
$echo "searchstring" > ./old_folder/useless_file
$echo "searchstring" > ./new_folder/good_file
$grep -r --exclude="old_folder/useless_file" searchstring *
./old_folder/useless_file:searchstring
./new_folder/good_file:searchstring
これが私が望む結果です -
./new_folder/good_file:searchstring
ベストアンサー1
この--exclude
オプションは、ディレクトリやフルパスではなく、ファイル名と一致するglobを使用します。
--exclude=GLOB
Skip files whose base name matches GLOB (using wildcard
matching). A file-name glob can use *, ?, and [...] as
wildcards, and \ to quote a wildcard or backslash character
literally.
したがって、次のようにすることができます。
$ grep -r --exclude="*useless_file*" searchstring
new_folder/good_file:searchstring
または、ディレクトリ内のすべてのファイルを除外します。
$ grep -r --exclude-dir="old_folder" searchstring
new_folder/good_file:searchstring