で再帰的に検索したいテキストがありますmydir/
。通常は入力grep -r "text to find" mydir/"
しますが、特定のファイルを除くすべてのファイルを検索したい場合は、何を入力しますか?
たとえば、ファイル「myfile.txt」を検索したくありませんが、ディレクトリに含まれています。
何を入力しますか?
簡単な方法の 1 つは、BASH の拡張ファイル グロビングを使用することです。
次のように使用できる拡張否定グロブがあります。
shopt -s extglob
grep -r "text to find" !(myfile.txt)
もう 1 つのより柔軟な方法は、 と を組み合わせて使用することfind
ですxargs
。find
必要なファイルのみを除外し、xargs
それらを引数として grep に渡すために使用します。
次の魂の仕事のようなもの:
find -type f -not -name myfile.txt | xargs grep "text to find"
次のコマンドを使用して、ファイルを除外できます。
grep -r --exclude="myfile.txt" "text to find"