Есть несколько вопросов с ответами на них:
Разница между экспортируемыми переменными оболочки и теми, которых нет в bash
В чем разница в использовании между переменными оболочки и переменными среды?
(и т.д.)
Предполагая, что под "всеми текстовыми файлами" вы подразумеваете все файлы, заканчивающиеся на .txt:
find / -type f -name '*.txt' -exec grep -i 'test123' {} \;
или
find / -type f -name '*.txt' -exec grep -i 'test123' {} +
Что-то, что укажет вам правильное направление:
find / -type f -name * .txt
, чтобы найти все файлы .txt, при условии, что у вас только один жесткий диск.
А затем просто используйте grep
для поиска в этих файлах.
Вы можете использовать find
, чтобы получить все файлы .txt
, а затем grep
искомая строка
$ find / -type f -name '*.txt' -exec grep 'test123' {} +
Где:
/
поиск по всему серверу. -тип f
найти только файлы, а не каталоги -name '* .txt'
найти все .txt
файлы -exec grep 'test123'
search test123
во всех найденных файлах {}
заменяется текущим именем файла, обрабатываемым везде, где оно встречается в аргументах команды, а не только в аргументах, где только оно +
это значительно улучшит время выполнения (так как он будет связывать аргументы перед выполнением до тех пор, пока) find / -type f -exec grep -I test123 {} +
Версия с +
вместо \;
намного быстрее и-I
игнорирует двоичные файлы. Или просто используйте рекурсивный grep:
grep -Ir test123 /
Возможно, вы также захотите 2>/dev/null
, потому что там будет много строк "permission denied".