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

使用选项-lgrep

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 回答