Как искать содержимое файла в каталоге для определенного шаблона, а затем возвращать (перенаправлять) имя файла в другой файл?

5

Я хочу выполнить следующую задачу с помощью команды bash:

найти все файлы в /etc , которые содержат строку «10.17.1» или «130.236.189» и выводят имена файлов в другой файл.

Я пытаюсь сделать это, используя egrep .

    
задан NSH 15.04.2017 в 17:49
источник

1 ответ

5

Вы можете использовать

sudo egrep -rl '(10\.17\.1|130\.236\.189)' /etc > newfile

Примечания

  • Вам нужно sudo , чтобы увидеть некоторые файлы здесь.
  • -l печатать только имена файлов, а не соответствующие строки
  • -r рекурсивный поиск. Удалите, если вы хотите только проверить файлы на верхнем уровне.
  • \. соответствует литеральному . ; без экранирования, . соответствует любому символу.
  • a|b соответствует a или b . Скобки в этом примере лишние, потому что в регулярном выражении нет ничего другого. 'foo|bar' соответствует foo или bar , а также '(foo|bar)' . Но я включил их, потому что я считаю, что это хорошая практика: круглые скобки определяют область для начала / остановки чередования, например 'foo bar|baz' соответствует foo bar или baz , тогда как 'foo (bar|baz)' соответствует foo bar или foo baz .
ответ дан Zanna 15.04.2017 в 17:52
источник