Команда grep для текстового файла в нескольких каталогах

Просто продолжайте и блокируйте это, я сделал другие вещи и больше не нуждаюсь в этом, так как я не мог заставить его работать.

1
задан 1 April 2016 в 09:58

2 ответа

Поскольку вы знаете имя целевых файлов, вы также можете делать

grep '^2\* x' */DATA.txt > newfile

Или с помощью awk:

awk '^/2\* x/' */DATA.txt > newfile

И Perl: [!d2 ]

perl -ne 'print if /2\* x/' */DATA.txt > newfile
5
ответ дан 23 May 2018 в 12:27

Общий подход:

grep -r <pattern>

или

специфический подход:

find -name <file patterns which you want to find> | xargs grep <pattern you looking for>
1
ответ дан 23 May 2018 в 12:27
  • 1
    Подход find не будет работать, если имена файлов или их пути содержат пробелы или символы новой строки. – terdon♦ 1 April 2016 в 13:10
  • 2
    кто использует новые строки в именах файлов? Моя находка ищет имена файлов с пробелами. Это проблема с xargs - ему нужен дополнительный аргумент для файлов с пустыми пространствами. – 404pio 1 April 2016 в 15:45
  • 3
    Некоторые люди выбирают, в других случаях это происходит случайно. Главное состоит в том, что в именах файлов разрешены новые строки, поэтому рекомендуется их рассмотреть. И да, find может иметь дело как с пробелами, так и с символами новой строки и всего остального. Вот почему find -name foo -exec grep bar {} + лучше, чем xargs, но если вы хотите использовать xargs, вам нужно сделать find -name foo -print0 | xargs -0 grep bar. – terdon♦ 1 April 2016 в 15:55
  • 4
    точно, спасибо за подробности – 404pio 1 April 2016 в 16:10

Другие вопросы по тегам:

Похожие вопросы: