Если вы хотите, чтобы тайм-аут составлял 10 секунд для всех, выполните следующие действия для конфигурации сервера ( sshd_config):
ClientAliveInterval 10
ClientAliveCountMax 0
Если вы хотите, чтобы тайм-аут составлял 10 секунд для локальных клиентов, сделайте следующее для конфигурации клиента (ssh_config):
ServerAliveInterval 10
ServerAliveCountMax 0
Если параметр AliveCountMax не равен нулю, он, вероятно, не сработает, потому что сервер ответит сбросом таймера (если нет проблем с подключением). В этом можно убедиться, запустив клиент ssh с включенной отладкой.
find. -name '*.py' -exec grep -l 'def test' {} \;
или
find. -name '*.py' -exec grep -l 'def test' {} +
Вторая версия приведет к меньшему количеству вызовов grep
за счет указания наборов файлов в качестве аргументов.
Попробуйте:
grep -r --include '*.py' 'def test'
-r
говорит grep искать файлы рекурсивно
--include '*.py'
указывает grep проверять только те файлы, имена которых заканчиваются на .py
.
Параметр --include
поддерживается как GNU, (, Linux, ), grep , так и MacOS grep
В следующей команде find передает имена найденных файлов на стандартный ввод grep:
find. -name "*.py" | grep "def test"
Проблема здесь в том, что grep обрабатывает свой стандартный ввод как текст для поиска. Следовательно, единственным выходом будут те файлы, чье имя(в отличие от содержимого )содержит def test
.
Например, создадим пустой файл:
$ touch 'def test.py'
И запустите команду конвейера:
$ find. -name "*.py" | grep "def test"
./def test.py
Команда находит этот файл по его имени. Его содержимое никогда не исследуется.
grep -ril 'def test'.
Приведенная выше команда выведет список того, что вы ищете.
В команде -параметры ril относятся к рекурсивному (r )без учета регистра (i )поиск и список (l )только имена файлов
Стандартный способ выполнения команды над файлами, найденными с помощью find
, — использование xargs:
find. -name "*.py" | xargs grep "def test"
В случае grep вы можете использовать рекурсивный grep вместо find + grep, как объяснялось в других ответах, но полезно знать xargs, потому что это общий подход, который можно использовать и для других случаев использования.
(И, как прокомментировал Дуг О'Нил :, если есть имена файлов с пробелами, вы должны указать find и xargs использовать нулевые символы в качестве разделителей:find. -name "*.py" -print0 | xargs -0 grep "def test"
)