Похоже, вы знаете синтаксис конфигурационного файла, но просто не хотите возиться с огромным списком шифров, :проблема с редактированием текста.
Список шифров ECDHE *задается командой оболочки
openssl ciphers | tr ":" "\n" | grep ^ECDHE | tr "\n" ":" | sed 's/:$//'
Вы не сказали, что вы хотите делать с шифрами, имена которых не начинаются с ECDH *, но изменив аргумент на grep в приведенном выше примере, вы можете получить любой список шифров. вы хотите, и объедините их в текстовом редакторе по мере необходимости. Таким образом, чтобы получить список шифров AES, но не шифров AES128 *, вы должны сказать^AES[^1]
Тем не менее, возможно, придется немного повозиться вручную, поскольку порядок шифров в списке может быть важен. Вы можете и, вероятно, должны указать, что сервер должен пробовать шифры в том порядке, в котором они находятся в списке включения.
Я предполагаю, что вы классифицируете каталоги, начинающиеся с точки, как "скрытые". Чтобы избежать спуска в такие каталоги, вы должны использовать -prune
.
find. -mindepth 1 -type d \( -name '.*' -prune -o -print \)
Это начинается в текущем каталоге (мы могли бы указать здесь *
, но это предполагает, что ваш подстановочный знак не установлен для включения точечных файлов/каталогов -, например bash
'sdotglob
). Затем он соответствует только каталогам, но не учитывает сам .
. Раздел в скобках сообщает find
, что если имя соответствует .*
, то оно должно быть сокращено, чтобы ни оно, ни его потомки не рассматривались в дальнейшем; в противном случае выведите его имя.
Если у вас нет опции (non -POSIX )-mindepth
, вы можете использовать эту альтернативу. Возможно, это лучше, чем первоначальное решение, которое я предложил, но я оставлю оба ответа в ответе
find. -type d \( -name '.?*' -prune -o -print \)
zsh
:print -rC1 -- **/*(N/)
(zsh globs по умолчанию пропускает скрытые файлы ).
Или делать что-либо с этими директориями:
for dir (**/*(N/)) anything with $dir
или, если anything
может принимать более одного файла одновременно, с GNU xargs
или совместимым:
xargs -r0a <(print -rNC1 -- **/*(N/)) anything with
LC_ALL=C find. -name '.?*' -prune -o -type d -print
LC_ALL=C
необходим, иначе он не сможет пропустить скрытые каталоги, имя которых содержит последовательности байтов, которые не образуют допустимый символ в локали пользователя. Посмотрите также, как порядок предикатов гарантирует, что мы избежим применения -type d
(, что потенциально связано с дополнительным дорогостоящим lstat()
системным вызовом )для тех файлов, имя которых начинается с .
.
Этот также выводит.
(текущий рабочий каталог ), добавьте ! -name.
перед -type
, если он вам не нужен, или измените его на:
LC_ALL=C find. ! -name. \( -name '.*' -prune -o -type d -print \)
Сделайте что-нибудь с файлами, замените -print
на -exec anything with {} ';'
или -exec anything with {} +
, если anything
может принимать более одного файла одновременно.
Альтернативой является инструмент с открытым исходным кодом Fd:
по умолчанию скрытые элементы исключаются, так что вы можете просто сделать:
fd -t d
Если вы хотите отобразить элементы, вы можете использовать один или оба из них:
-H, --hidden Search hidden files and directories
-I, --no-ignore Do not respect.(git|fd)ignore files