Чтобы получить имена файлов, которые содержат слово «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: «такого файла или каталога нет»

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

0
dipt 27 Дек 2011 в 20:07
Используйте grep -l ...................... .
 – 
William Pursell
27 Дек 2011 в 20:15

1 ответ

Если вам просто нужны совпадающие имена файлов, передайте -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 {} \;
0
William Pursell 27 Дек 2011 в 20:17