Лучший способ ограничить поиск команды unix по имени файла - PullRequest
0 голосов
/ 28 февраля 2011

Я получаю результаты, используя поиск с именами файлов, которые имеют '~' и .swp и т. Д. Итак, я сделал следующее, но есть ли лучший способ сделать это?'.*.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");

Ответы [ 2 ]

2 голосов
/ 28 февраля 2011

Попробуйте использовать

find . -name \*.js -print0 | xargs -0 grep -n ".*loginError.*"

Это найдет только файлы с расширением 'js' и не заканчивающиеся на ~ или .swp

РЕДАКТИРОВАТЬ: добавлен '0' -print0 (редактирование требует 6 символов, поэтому я добавляю это; эх!)

1 голос
/ 28 февраля 2011

Чтобы сделать все это одной командой без xargs, вы можете сделать это следующим образом

find . -name "*.js" -exec grep -n ".*loginError.*" /dev/null {} \;

часть / dev / null заставляет grep думать, что он ищет несколько файлов, а затем правильно выводит имя файла, в противном случае он просто напечатает номер строки, не сообщая, в каком файле он находится

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...