grep
Debian/proc
では、または/sys
。しかし、以下を使用すると:
--exclude-dir=/proc
または
--exclude-dir={/proc,/sys}
または
--exclude-dir=/proc --exclude-dir=/sys
それからそれはgrep
まだ読まれ、/sys
したがって衝突します。それでは、grep
スキップ/proc
とディレクトリをどのように知ることができますか/sys
?
答え1
--exclude-dir
GNUマニュアルの文書grep
によると
--exclude-dir=GLOB
名前サフィックスがパターンと一致するすべてのコマンドラインディレクトリはスキップされます
GLOB
。再帰的に検索するときは、デフォルト名と一致するサブディレクトリをスキップしますGLOB
。追加の末尾のスラッシュは無視されますGLOB
。
ご覧のとおり、指定されたパターン(GLOB
)はディレクトリの実際のファイル名にのみ適用され、ディレクトリ名を名前/
に含めることはできないため、同様のパターンは決して/proc
一致しません。
--exclude-dir=proc
したがって、and --exclude-dir=sys
(または--exclude-dir={proc,sys}
時間が足りない場合)を使用する必要があります。また、この方法は/proc
andをスキップする/sys
だけでなく、その他次のいずれかの名前のディレクトリです。
この2つのディレクトリを回避しながら、ルートから下にディレクトリツリー全体を再帰的に検索するもう1つの方法は、grep
fromを使用することですfind
。
find / \( -type d \( -path /proc -o -path /sys \) -prune \) -o \
-type f -exec grep 'PATTERN' {} +
これにより、2つのことが検出されます。特定ディレクトリを/proc
選択して入力を/sys
停止します。find
また、grep
一度にできるだけ大きなバッチで見つかった一般的なファイルも提供します。
答え2
それでもこれは素晴らしい作品です!
--exclude-dir={proc,sys}
答え3
grepは検索リストにdev /、sys /などで表示されるため、選択したディレクトリを検索中のファイル名の基礎として使用するため、以下を使用しないでください。
grep 'yourstring' -R --exclude-dir={/dev,/sys,/proc} /
以下を使用する必要があります。
grep 'yourstring '-R --exclude-dir={dev/,sys/,proc/} /