grep:--exclude-dirには名前にいくつかのテキストが含まれています。

grep:--exclude-dirには名前にいくつかのテキストが含まれています。

以下を使用する必要があります。

grep -rio pattern --exclude-dir=".config/dir1*" --exclude-dir=".test*"

grep名前におよびを含むpatternすべてのフォルダを避けるには、.config/dir1.test

たとえば.config/dir1、、、、.config/dir1/dir2および.test./other/.test除外する必要があります。

私がこのフォルダを除外していないものは何ですか?助けてもらえますか?

ありがとう

答え1

注文する.test/とのファイルを除外しますother/.test/

フルパスではなくディレクトリのデフォルト名だけが解決されるため、.config/dir1その中のファイルは除外されません。--exclude-dirまた、除外され--exclude-dir="dir1"ますelsewhere/dir1。ディレクトリが除外されると、そのサブディレクトリも除外されるため--exclude-dir="dir1"除外されます.config/dir1/dir2

grepの除外パターンが不十分な場合findに使用できますgrep。構文はfindより複雑ですが、機能はより強力です。たとえば、.config/dir1名前付きの他のディレクトリは除外できますが、除外することはできませんdir1。 (GNU grepがあるので、GNU findもあるとします。)

find . \
     -path "./.config/dir1" -prune -o \
     -name ".test" -prune -o \
     -type f -print0 |
  xargs -0 grep -io pattern

関連情報