Передача файла в качестве параметра - PullRequest
0 голосов
/ 04 августа 2020

Товарищи, у меня есть. sh, который создает file.log, в этом файле у меня есть много git журналов, в которых выполняется поиск из диапазона дат, который пользователь передал раньше (просто чтобы объяснить, что у него есть). Теперь мне нужно использовать этот файл file.log, который у меня есть из этой внешней программы, и использовать с этим кодом:

find ./* -type f -exec grep -l 'a1009206_vcr' {} \; > file.log

мой вопрос: как я могу это сделать?

1 Ответ

0 голосов
/ 05 августа 2020

Рекурсия с Grep при игнорировании отсутствующих / нечитаемых файлов

Утилиты BSD и GNU grep имеют опции, которые могут избавить вас от хлопот, связанных с использованием find , xargs , и др. во многих случаях. Это один из тех. Например:

grep -Flrs "a1009206_vcr" . > file.log

Здесь используются следующие флаги:

  • -F, --fixed-strings

    Интерпретировать шаблон как набор фиксированных строк (т.е. заставить grep вести себя как fgrep).

  • -l, --files-with-matches

    В стандартный вывод выводятся только имена файлов, содержащих выбранные строки . grep будет искать файл только до тех пор, пока не будет найдено совпадение, что делает поиск потенциально менее затратным. Имена путей указываются один раз для каждого найденного файла. Если выполняется поиск в стандартном вводе, записывается строка `` (стандартный ввод) ''.

  • -R, -r, --recursive

    Рекурсивный поиск в подкаталогах в списке.

  • -s, --no-messages

    Бесшумный режим. Несуществующие и нечитаемые файлы игнорируются (т. Е. Их сообщения об ошибках подавляются).

для рекурсии вниз по текущему рабочему каталогу (например, . или $PWD, если вы предпочитаете ) и записать список имен файлов с совпадениями в file.log . Флаг -s предотвращает засорение выходного файла ошибками разрешений или другим мусором. Вы также можете отключить стандартную ошибку с помощью 2>&-, если хотите.

Предостережение: символические ссылки и рекурсия

Вышеупомянутый должен работать в большинстве случаев, но вам также может потребоваться добавить -O или -p, если вы повторяете и не хотите следовать некоторым или всем вашим символическим ссылкам. На странице руководства есть более подробные сведения о поведении grep по умолчанию в отношении символических ссылок, с рекурсией и без нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...