我使用带有'〜'和.swp等文件名的find获得结果。所以我做了以下操作,但是有更好的方法吗? '.*.js' -iname '*.js'
部分感觉“多余”。
$ find ./ '.*.js' -iname '*.js' -print0 | xargs -0 grep -n ".*loginError.*"
find: `.*.js': No such file or directory
./js/signin.js:252: foo.loginError();
./js/signin.js:339:foo.loginError = function() {
./js/signin.js:340: foo.log("ui.loginError");
答案 0 :(得分:2)
尝试使用
find . -name \*.js -print0 | xargs -0 grep -n ".*loginError.*"
这将只找到扩展名为'js'并且不以〜或.swp
结尾的文件编辑:添加'0'-print0(编辑需要6个字符,所以我添加了这个;呃!)
答案 1 :(得分:1)
要在没有xargs的情况下在一个命令中完成所有操作,你可以像这样做
find . -name "*.js" -exec grep -n ".*loginError.*" /dev/null {} \;
/ dev / null是让grep认为它正在搜索多个文件然后它会正确输出文件名,否则它只是打印出行号而不告诉你它在哪个文件