文字列「RUSH2112」のファイルシステムから複数のファイルを検索する必要があります。次のコマンドを完了しましたが、これが正しいかどうかはわかりません。私はマウントされたファイルシステムに立っています。
find . -type f -exec grep -i1 "Rush2112" {} \;
答え1
一つを探すひも(正規表現ではない)大文字と小文字を区別せずにgrep -iF STRING
(STRING
探している引用文字列がどこにあるべきか)を使用します。
ディレクトリ階層のすべての一般ファイルを繰り返すには、次の手順を実行します。
find . -type f -exec grep -iF STRING /dev/null {} +
このコマンドとユーザーコマンドの主な違いは、grep
見つかったファイルグループに対して実行されることです。見つかった各ファイルに対してコマンドがgrep
一度実行され、ファイルが多いと速度が遅くなることがあります。これが+
最終的に違いを生み出すものです。
別の違いは、grep
複数のファイルで呼び出されるため、一致するエントリが見つかったファイルのパス名が出力に含まれることです。/dev/null
そこ力grep
この動作は、単一のファイルのみを使用している場合に呼び出されます。実装に非標準(ただし一般的な)オプションがある場合は、インクルードの代わりにgrep
オプションを使用できます。-H
/dev/null
grep
一部の実装には、grep
helpなしでディレクトリ自体を再帰的に実行するオプションもありますfind
。これは通常-R
オプションで行われます。
grep -R -iF STRING .
GNUにはこのオプションとはわずかに異なるオプションもgrep
あります(使用する場合はシンボリックリンクに従わず、実行時に得られた動作と似ています)。-r
-R
-r
grep
find . -type f
探しているものがその文字列を含むファイルのパス名であり、一致するファイルの実際の行ではない可能性がある場合は、さまざまな方法でこれを行うことができます(上記と同様の方法ですべて同じ)。 )).
grep -q
各ファイルのテストとして使用されます。find . -type f -exec grep -qiF STRING {} ';' -print
grep -l
以下で見つかったファイルグループ全体で使用されますfind
。find . -type f -exec grep -ilF STRING {} +
再帰を使用してください
grep -l
。grep -R -ilF STRING .
与えられた文字列を含むファイルをさらに処理するには、最初の選択肢を選択します。
find . -type f -exec grep -qiF STRING {} ';' -exec sh -c '
for pathname do
# Process "$pathname" here
done' sh {} +
または、grep
インラインスクリプト内で実行します。
find . -type f -exec sh -c '
for pathname do
if grep -qiF STRING "$pathname"; then
# Process "$pathname" here
fi
done' sh {} +
関連: