0

特定のフォルダとコンテンツ内のファイルを検索したいのですが、見つかったファイルの名前だけを印刷したいのです。私にはコマンドがあります:

for file in $(find from | xargs grep 'move')
do 
   echo $file
done

たとえば、次のように出力されます。

from/1.txt:move
from/2.txt:some text
move
from/3.txt:move text

でも私はしたい:

from/1.txt
from/2.txt
from/3.txt

私はその不要な部分を使用してカットしようとしました:

${file%:*}

これにより結果が得られます:

from/1.txt
from/2.txt
move
from/3.txt

その「移動」は残されます。

4

2 に答える 2

3

Grepには再帰的オプションと「ファイル名をリストするだけ」オプションがあるため、これは機能するはずです。

grep -r -l "move" from
于 2012-10-31T21:48:19.317 に答える
2

オプション-lを使用してgrep、すなわち

for file in $(find from | xargs grep -l 'move')
do 
   echo $file
done

またはさらに良い:

for file in $(find from -type f -print0 | xargs -r0 grep -l 'move')
do 
   echo $file
done
于 2012-10-31T21:39:04.167 に答える