我正在寻找一个简单的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可行。查找文件路径/名称怎么样?此外,我想选择将输出发送到文本文件或屏幕。
答案 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 {}))'