Использовать ssh-agent
для хранения ключа затем sshfs может использовать ключ от агента, не прося пароль. - Конечно, теперь необходимо предоставить пароль для добавления ключа к агенту. - mate-keyring
мог бы помочь Вам с этим.
Вы должны просто позволить grep
дать вам имена файлов. GNU grep
может сделать так:
grep -HFf ../strings.txt *
Это даст вам вывод, который будет выглядеть так:
[filename]:[matched_line]
... для каждого совпадения в каждом файле в каталоге. Вы также можете получить номера строк:
grep -HnFf ../strings.txt *
... что обеспечивает...
[filename]:[line_number]:[matched_line]
Проблема в том, что Вы передаете по одному файлу одновременно в grep
. Когда grep
видит один файл в своей командной строке, он предполагает, что вы точно знаете, где вы ищете, поэтому имя файла не отображается перед совпадениями.
Хитрость заставить grep
всегда выводить имя файла - это также передать /dev/null
(где никогда не будет совпадений). В некоторых реализациях grep есть такая возможность: -H
.
Дополнительно вы можете использовать -exec ... {}. +
вместо -exec ... {} \;
для выполнения программы для многих файлов за один раз. Это быстрее. Вы все равно должны передать /dev/null
или -H
, потому что может случиться так, что команда будет вызвана ровно для одного файла, либо потому, что есть один подходящий файл, либо потому, что есть много совпадений, требующих, чтобы grep
вызывался несколько раз, и один раз случилось так, что речь шла об одном файле.
find -name 'LYFNRE.*' -exec grep -f file1.txt /dev/null {} +
grep GNU и последние реализации BSD (включая OSX) поддерживают возможность рекурсивного вызова grep
без запроса find
.
grep -R --include='LYFNRE.*' -f file1.txt -H .
Или же вы можете сделать рекурсивный глобус в оболочке командной строки. В zsh это работает нестандартно. В bash, вам нужно сначала запустить shopt -s globstar
, и остерегайтесь, что bash возвращается через символические ссылки на каталоги (в отличие от find
или zsh).
grep -f file1.txt /dev/null **/LYFNRE.*
используйте egrep:
egrep -n "str1|str2|str3" file_names
-n выведет номер строки в конкретном файле, в котором была найдена строка
.