grep コマンドを使用して検索します。

grep コマンドを使用して検索します。

findコマンドで見つけたパスで指定されたファイルでgrepコマンドが特定の単語を見つけるようにするにはどうすればよいですか?

locate my.cnf | grep user   

(grepコマンドがコマンドを見つけるために見つけたファイルから「user」という単語を検索したい)

答え1

検索結果が間違いなく空白なしでパスを返す場合は、xargs次のようになります。

locate my.cnf | xargs grep user

xargsnullただし、パスまたはファイル名にスペースを含めることができる場合を処理するために区切り文字として使用しlocate(または文字列を返すために使用するプログラム)、それらを区切り文字として送信するように指示して自分自身を保護する習慣が必要です。そう:

locate -0 my.cnf | xargs -0 grep user

パスに/name with space/my.cnf

答え2

私が正しく理解したら、次のようにすることができます。

#!/bin/sh
typeset what1=$1
typeset what2=$2
[ "$#" -eq 2 ] || { echo "Two arguments expected"; exit 1; }
locate ${what1} | while read file; do
    grep ${what2} ${file} /dev/null
    done

locatewhat1一致する文字列の引数()に一致するファイルを検索しますwhat2。このdev/nullパラメーターは、一致するファイル名を強制的にgrep報告します。

答え3

1本のライン:

for file in $(locate my.cnf) ; do grep -r user "$file" ; done

Locateから取得したディレクトリ名の下のファイルからパターンを検索しようとすると、そのパターンが処理され、-rそれ以外の場合は削除されます-r

関連情報