Bash命令用于搜索任何短语和返回文件和路径列表

时间:2012-10-12 18:37:19

标签: linux bash shell command

我正在寻找一个简单的bash命令来搜索文件名,目录名和所有文件的文本中的短语。它应该返回一个文件和目录列表。理想情况下,我希望选择将其传递到像>这样的文件。 myfiles.txt

类似的东西:

find 'my key phrase'
find 'my key phrase' > mylist.txt

将返回:

/home/stuff/filewithmykeyphraseinit.txt
/home/stuff/a filename with my key phrase.doc
/home/stuff/a directory with my key phrase/another subdirectory/

修改 我正在测试我正在收到许多很棒的建议。一个问题:是否有办法使这些不区分大小写?我相信为grep添加-i可行。查找文件路径/名称怎么样?此外,我想选择将输出发送到文本文件或屏幕。

3 个答案:

答案 0 :(得分:4)

{ find . -name '*my key phrase*' ;
  grep -rl 'my key phrase' .     ;
} | sort -u > mylist.txt

答案 1 :(得分:1)

你几乎就在那里,只需指定你想匹配文件名并为你的模式添加通配符:

find -name '*my key phrase*' > mylist.txt

要在文件内容中搜索,请使用grep命令(使用-r递归选项或rgrep):

rgrep -l 'my key phrase' >> mylist.txt

答案 2 :(得分:0)

一个命令来完成所有操作(使用xargs和bash)

find | xargs -I {} bash -c '(([[ -f "{}" ]] && grep -l "my key phrase" "{}") || ([[ "{}" =~ "my key phrase" ]] && echo {}))'