Как обрезать определенные части нескольких имен каталогов?

В общей сложности 2500 правил потребовали бы больших усилий для ЦП/пропускной способности в случае воздействия на каждый пакет. Если, например, вы отправляете 10 000 пакетов, вы будете анализировать 25 000 000 правил, что потребует много работы. Гораздо точнее и безопаснее было бы заблокировать весь входящий трафик (, кроме установленного и связанного ), а затем начать открывать сервисы, которые потребуют НОВЫХ подключений к вашей стороне.

Если вы хотите добавить черный список IP-адресов, вы можете использовать ipset , который может создавать такие списки в одном правиле, а также обновлять правила, не предполагая большого штрафа за вашу производительность. Например, если вы блокируете 2200 отдельных IP-адресов, вы можете сохранить их в списке и проверить их с помощью одного правила, что потребует гораздо меньше усилий с точки зрения ЦП.

0
15.04.2021, 14:57
2 ответа

Переберите имена и используйте замену переменных, чтобы удалить ненужные биты. Далее предполагается, что $HOMEравно /home/anikи именно здесь находятся ваши файлы (измените topdirна другое значение, если файлы расположены в другом месте):

#!/bin/sh

topdir=$HOME

for dirpath in "$topdir"/Zt.*.Spades; do
    [ ! -d "$dirpath" ] && continue

    newdirpath=$topdir/${dirpath#$topdir/Zt.}
    newdirpath=${newdirpath%.Spades}

    if [ -e "$newdirpath" ]; then
        printf 'Can not rename "%s" into "%s", name taken\n' "$dirpath" "$newdirpath"
    else
        printf 'Renaming "%s" into "%s"\n' "$dirpath" "$newdirpath"
        echo mv "$dirpath" "$newdirpath"
    fi
done

Выражение $topdir/${dirpath#$topdir/Zt.}будет заменено путем к каталогу, но без Zt.в начале имени файла каталога. Он делает это, удаляя префикс $topdir/Zt.и снова добавляя $topdir/в начале.

Выражение ${newdirpath%.Spades}заменяется на $newdirpath, но удаляет строку .Spadesиз конца значения.

Я добавил echoперед командой mv, чтобы вывести команду, которая будет выполняться вместо ее выполнения. Проверьте код, а затем удалите echo, если он выглядит правильно.

2
28.04.2021, 22:52

Вы можете использовать инструмент Perl rename:

rename -n 's/Zt\.(.+?)\.Spades$/$1/' /home/anik/Zt.*.Spades

(Удалите -nдля фактического переименования, если вы довольны результатом)


Проверьте это , чтобы выбрать правильный инструмент rename.

1
28.04.2021, 22:52

Теги

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