可能是混淆的问题,我希望现在清楚,模式应该匹配内容而不是文件名!
你的问题并不清楚,并在原来的答案我已经展示了如何找到文件名匹配的模式。如果您只想搜索内容匹配模式的文件,就如同
grep 'pattern' directory/*
(使用shell匹配)。
,您仍然可以使用find
传递给grep
之前过滤出文件:
find 'directory' -maxdepth 1 -mindepth 1 -type f \
-exec grep --with-filename 'pattern' {} +
原来的答案
grep的是不恰当的工具来搜索文件名,因为你需要生成的列表文件传递给Grep之前。即使你使用类似于ls | grep pattern
这样的命令获得了期望的结果,你将不得不追加另一个管道来处理这些文件(我猜,你很可能需要早晚以某种方式处理它们)。
改为使用find
,因为它具有自己强大的模式匹配功能。
例子:
find 'directory' -maxdepth 1 -mindepth 1 -regex '.*pattern'
使用-iregex
为-regex
不区分大小写版本。还阅读了关于-name
,-iname
,-path
和-ipath
选项。
,能够运行的文件的命令(或脚本)用-exec
动作被处理,例如:
find 'directory' -maxdepth 1 -mindepth 1 -type f \
-regex '.*pattern' -exec sed -i.bak -r 's/\btwo\b/2/g' {} +
'发现。-type f -name'* pattern *'' –
这些将会查看'pattern'的路径中的所有文件我想这不是你想要做的。 'find'或'ls ... | grep'会有帮助 – nu11p01n73R
如果你还想用grep试试'grep/path/to/somewhere/* -d skip -le“pattern”' – bansi