Вы можете использовать find
, чтобы получить все файлы .txt
, а затем grep
искомая строка
$ find / -type f -name '*.txt' -exec grep 'test123' {} +
Где:
/
поиск по всему серверу. -тип f
найти только файлы, а не каталоги -name '* .txt'
найти все .txt
файлы -exec grep 'test123'
search test123
во всех найденных файлах {}
заменяется текущим именем файла, обрабатываемым везде, где оно встречается в аргументах команды, а не только в аргументах, где только оно +
это значительно улучшит время выполнения (так как он будет связывать аргументы перед выполнением до тех пор, пока) Нужно что-то вроде "насрать на вечную историю".
Здесь есть хорошее описание, чтобы заставить его работать.
В этом решении по-прежнему отсутствует PID, который можно было бы добавить с помощью идей отсюда.
В основном:
export HISTTIMEFORMAT="%s "
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND ; }"' \
echo $$ $USER "$(history 1)" >> ~/.bash_eternal_history'
Который использует $PROMPT_COMMAND
для генерации:
$PID $USER $LAST_COMMAND
вывода для каждой выполненной команды.
Моя стратегия состоит в том, чтобы добавить к /etc/bash.bashrc
следующую строку:
readonly PROMPT_COMMAND='history -a >(logger -t "cmdline $USER[$PWD] $SSH_TTY $SSH_CONNECTION")'
Затем в/etc/rsyslog.conf
:
*.* @syslogserver:514
Я предпочитаю этот подход ведению журнала в один файл, так как: