Замена счетчика в имени файла для всех файлов в каталоге

Сценарий установки для периодического запуска, но немедленно завершает работу, если условие не выполняется.

напр.

#!/bin/sh

df "<mount point or device node or /var/log>" | 
    grep -q -e '100%' -e '9[5-9]%' || 
    exit

find /var/log -type f -name "*old logs*" -exec rm {} +
6
07.11.2021, 15:45
1 ответ

В именах файлов нам нужно заменить последовательность цифр, за которой следует точка — \d+.— на счетчик с 4 -нулями, за которым следует точка — sprintf("%04d.", ++$c).

rename -n -- 'our $c; s/\d+\./sprintf("%04d.", ++$c)/e' *.jpg

Чтобы не заполнять нулями, нам не нужно sprintf, а только для конкатенации счетчика и точки. Поскольку оператор конкатенации также является точкой,

rename -n -- 'our $c; s/\d+\./++$c. "."/e' *.jpg

Примечания

Удалите -n, если убедитесь, что он работает правильно.

В некоторых дистрибутивах renameможет называться perl-rename.

our $c;был введен для устранения ошибки "Глобальный символ "$c" требует явного имени пакета" . В моей системе нет необходимости... ¯\(ツ)

4
07.11.2021, 17:06

Теги

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