как получить список всех тестовых сценариев Python, содержащих «def test» [дубликат]

Если вы хотите, чтобы тайм-аут составлял 10 секунд для всех, выполните следующие действия для конфигурации сервера ( sshd_config):

ClientAliveInterval 10
ClientAliveCountMax 0

Если вы хотите, чтобы тайм-аут составлял 10 секунд для локальных клиентов, сделайте следующее для конфигурации клиента (ssh_config):

ServerAliveInterval 10
ServerAliveCountMax 0

Если параметр AliveCountMax не равен нулю, он, вероятно, не сработает, потому что сервер ответит сбросом таймера (если нет проблем с подключением). В этом можно убедиться, запустив клиент ssh с включенной отладкой.

6
12.02.2019, 21:09
4 ответа
find. -name '*.py' -exec grep -l 'def test' {} \;

или

find. -name '*.py' -exec grep -l 'def test' {} +

Вторая версия приведет к меньшему количеству вызовов grepза счет указания наборов файлов в качестве аргументов.

11
27.01.2020, 20:20

Попробуйте:

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

Команда находит этот файл по его имени. Его содержимое никогда не исследуется.

15
27.01.2020, 20:20
grep -ril 'def test'.

Приведенная выше команда выведет список того, что вы ищете.

В команде -параметры ril относятся к рекурсивному (r )без учета регистра (i )поиск и список (l )только имена файлов

1
27.01.2020, 20:20

Стандартный способ выполнения команды над файлами, найденными с помощью 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")

0
27.01.2020, 20:20

Теги

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