2011-08-02 18 views
0

特定のパターンをグレープすることによって多くの結果が返ってきましたが、スクリプト内ですべての結果を順番に使用したい場合は、どうすればよいでしょうか?私は多くの結果を返す証明書フォルダに.derをgrepします。 grepコマンドからリストされた各.der証明書を使用したいと思います。 grepの結果から1つのファイルを後で使用するにはどうすればよいですか?Question on grep

+1

チェックアウトxargs(man xargs)。 –

答えて

0

一方向はgrep -lです。これにより、すべてのファイルを1回だけ取得できます。 -lは、一致するファイルではなく、各ファイルの名前のみを表示するために使用されます。

はその後、あなたは結果にループすることができます

for file in `grep ....` 
do 
    # work on $file 
done 

はまた、あなたがあなたのファイル名にスペースがある場合、潜在的な問題のトンがあることに注意してください。 Unix & LinuxスタックエクスチェンジのLooping through files with spaces in the namesを参照してください。ことができます。もちろん

for cert in $(grep '\.der' *) ; do 
    echo ${cert} # or something else 
done 

、それらder物事は実際のファイルであれば(そして、あなたはそれらを得るためにls | grepを使用している):

0

あなたは、何かのようにforループの一部として出力を使用することができますファイルを直接使用してください:

for cert in *.der ; do 
    echo ${cert} # or something else 
done 

いずれの場合も、スペースを埋め込んだ引数に注意する必要があります。

1

あなたは実際に内容をグレープしていますか、あるいはファイル名だけですか?それはファイル名だ場合は、findコマンドを使用したほうが良いと思います:

find /path/to/folder -name "*.der" -exec some other commands {} ";" 

これは、一般的に速くする必要があります。