смесь команд unix pipe с поиском - PullRequest
0 голосов
/ 27 декабря 2011

Чтобы получить имена файлов, которые содержат слово «measure_remove» в «компактном» каталоге, Я сделал эту команду.

find ./compact/ -type f -exec grep -n 'measure_remove' {} \ -exec ls {} \;

  • grep: ls: 'нет такого файла или каталога'
  • grep: -exec: 'нет такого файла или каталога'
  • . / Compact / prepare.js: 44509: = "measure_remove";
  • grep: ls: 'нет такого файла или каталога'
  • grep: -exec: 'нет такого файла или каталога'

Это работает, но я просто хочу получить имена файлов и результат. Есть ли более одного пути?

1 Ответ

0 голосов
/ 27 декабря 2011

Если вы просто хотите, чтобы имена файлов совпадали, передайте -l (el) в grep:

$ find compact -type f -exec grep -l 'measure_remove' {} \;

Если вы также хотите совпадения строк, некоторые grep принимают -H, но все grep должны печатать имя файла, если вы дадите ему 2 имени файла. Обычная техника - передать / dev / null в качестве второго файла для поиска:

$ find compact -type f -exec grep -n measure_remove /dev/null {} \;
...