Предполагая, что под "всеми текстовыми файлами" вы подразумеваете все файлы, заканчивающиеся на .txt:

find / -type f -name '*.txt' -exec grep -i 'test123' {} \;

или

find / -type f -name '*.txt' -exec grep -i 'test123' {} +
1
28.01.2020, 02:20

Что-то, что укажет вам правильное направление:

find / -type f -name * .txt , чтобы найти все файлы .txt, при условии, что у вас только один жесткий диск. А затем просто используйте grep для поиска в этих файлах.

-1
28.01.2020, 02:20

Вы можете использовать find , чтобы получить все файлы .txt , а затем grep искомая строка

$ find / -type f -name '*.txt' -exec grep 'test123' {} +

Где:

  • / поиск по всему серверу.
  • -тип f найти только файлы, а не каталоги
  • -name '* .txt' найти все .txt файлы
  • -exec grep 'test123' search test123 во всех найденных файлах
  • {} заменяется текущим именем файла, обрабатываемым везде, где оно встречается в аргументах команды, а не только в аргументах, где только оно
  • + это значительно улучшит время выполнения (так как он будет связывать аргументы перед выполнением до тех пор, пока)
5
28.01.2020, 02:20
find / -type f -exec grep -I test123 {} +

Версия с + вместо \; намного быстрее и-I игнорирует двоичные файлы. Или просто используйте рекурсивный grep:

grep -Ir test123 /

Возможно, вы также захотите 2>/dev/null, потому что там будет много строк "permission denied".

1
28.01.2020, 02:20

Теги

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