grep на некоторых файлах - PullRequest
2 голосов
/ 10 февраля 2011

Я хочу найти все файлы с расширением x во всех подпапках, содержащих строку s, как мне это сделать?

grep -nr s. *. X ?????

Dirk

Ответы [ 2 ]

6 голосов
/ 10 февраля 2011

GNU find

find . -iname "*.x" -type f -exec grep -l "s" {} +; 

Если у вас есть Ruby (1.9 +)

Dir["/path/**/*.x"].each do |file|
  if test(?f,file)
   open(file).each do |line|
     if line[/s/]
       puts "file: #{file}"
       break
     end
   end
  end
end
1 голос
/ 10 февраля 2011

Сначала я найду файлы * .x, а затем найду интересующую вас строку с grep :

$ find directory -name "*.x" -exec grep -Hn s {} \;
  • -name "*.x" рекурсивно ищет каждый файл с x .
  • -exec grep ... {} \; ищет строку s для каждого обнаруженного файла.
  • -H рекомендуется, поскольку вы не знаете, какой файл соответствует выражению.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...