Попытка добавить группу файлов с датой; вместо этого мой сценарий изменяет тип файла!

Как правило, вам не нужна вся строка, чтобы создать шаблон для строки поиска sed, вам просто нужна ее уникальная часть и " (одноранговый -порт.+ )([ 0 -9]+ )" выглядит вполне достаточным для этого случая, вроде найдите ключевое слово с небольшим хвостиком для него, затем последовательность цифр и замените все это первым без изменений (\1 )и второе, используя строку в сценарии.

#!/bin/bash

FNAME=$1
NPORT=$2
SSTR='{s/(peer-port.+) ([0-9]+)/\1 '$NPORT'/};'
echo "new port $NPORT in $FNAME"

sed -E -i -e "$SSTR" $FNAME
2
03.10.2020, 02:06
1 ответ

Вы хотите вставить дату перед точкой, поэтому вам нужно разделить имя:

find. -maxdepth 1 -type f -name '*.*' -exec sh -c 'mv -- "$0" "${0%.*}"-$(date +%Y%m%d).${0##*.}' {} \;

${0%.*}принимает имя до ., а ${0##*.}дает вам расширение (с датой между ).

-maxdepth 1ограничивает файлы текущим каталогом (, исключая подкаталоги ).

3
18.03.2021, 23:00

Теги

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