我在寻找一个简单的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作品。 如何找到文件路径/名字? 另外,我想必须要么输出发送到一个文本文件或屏幕的选项。
{ find . -name '*my key phrase*' ;
grep -rl 'my key phrase' . ;
} | sort -u > mylist.txt
你几乎没有,只需指定你想匹配文件名和通配符添加到您的模式:
find -name '*my key phrase*' > mylist.txt
要将文件的内容中进行搜索,使用grep命令( -r
递归选项,或rgrep):
rgrep -l 'my key phrase' >> mylist.txt
一个命令来做到这一切(使用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