bash命令来搜索词组出现的任何和返回文件和路径列表(Bash command to search

2019-09-24 02:05发布

我在寻找一个简单的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/

编辑:我得到了很多很好的建议目前我测试。 一个问题:有没有办法让这些不区分大小写? 我相信加入-i到grep作品。 如何找到文件路径/名字? 另外,我想必须要么输出发送到一个文本文件或屏幕的选项。

Answer 1:

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


Answer 2:

你几乎没有,只需指定你想匹配文件名和通配符添加到您的模式:

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

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

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


Answer 3:

一个命令来做到这一切(使用xargs的和bash)

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


文章来源: Bash command to search for any occurrence of phrase and return list of files and paths