grep検索から入れ子になったディレクトリを除外したいと思います/path/to/file
。例:
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="to" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="file" "hello" .
jake@jake-laptop:~/test$ egrep -r --exclude-dir="path/to/file" "hello" .
./path/to/file/f.txt:hello
最後の行では、そのファイルは除外されません。これは、パラメータに付属のネストされたディレクトリが複数あるためですexclude-dir
。path/to/file
ディレクトリ検索を除外する最後の例をどのように取得できますか?
ベストアンサー1
--exclude-dir
パスのデフォルト名(つまり、現在のサブディレクトリ)とのみ比較するようです。したがって、 path/to/file は dir "file" と絶対に一致せず、--exclude-dir=file
glob バージョン (例えば--exclude-dir=*ile
.
一般的な選択肢は、たとえばfind
オプションを処理する場合を使用することです-path
。
find . -path ./path/to/file -prune -o -type f -exec egrep -l 'hello' {} +
その後のパターンは-path
開始ディレクトリを含むパスと一致する必要がありますが、globを使用して単純化できます。たとえば、'*path*file*'
*も/と一致します。
それ以外の場合に切り替えることができますfind | sed | xargs egrep
。