Другая программа, которую можно использовать, mutt
. Я предпочитаю использовать mutt
кому: mail
- это просто имеет более хороший интерфейс, по-моему.
# apt-get install mutt
должен работать - но я использую Fedora не, Ubuntu так не может подтвердить это.
Это будет также работать:
for f in *.png; do
int=`basename $f .png | cut -d '.' -f 2`
new_name=`printf "file.%0.4i.png\n" $int`
[ ! -f $new_name ] && mv $f $new_name
done
Простой прием, если Вы хотите простой, портативный сценарий, должен начать рассчитывать в 10 001 и разделить начальную цифру.
for x in file.*.png; do
n=${x%.*}; n=${n##*.}
n=$((n + 10000))
mv "$x" "${x%.*.*}.${n#1}.${x##*.}"
done
С zsh, с помощью zmv и l
флаг расширения параметра:
setopt extended_glob
autoload zmv
zmv '(file).([0-9]##).(png)' '$1.${(l:4::0:)2}.$3'
Попробуйте следующее:
for f in *.png
do
foo='0000'${f#file.} #remove "file." and prepend 0000
foo=${foo:(-8)} #last eight characters
echo mv $f file.$foo
done
Удалите эхо, если Вы довольны выводом.
Если Вы имеете rename
команда от пакета Perl (в противоположность тому от пакета util-linux):
rename 's/(\d+)/sprintf"%04d",$1/ge' file.*.png
Альтернатива на основе glenn jackman' комментарий, который предлагает портативное решение, включающее Perl. Поскольку Perl имеет свое собственное rename
функция, больше нет потребности во внешнем mv
:
ls -1 file.*.png | perl -ne 'chomp;($n=$_)=~s/(\d+)/sprintf"%04d",$1/ge;rename$_,$n'
Тот код легче улучшить для репродуцирования отдельно оплачиваемых предметов, добавленных rename
внешняя команда: пропустите, если новое имя файла идентично со старым, и пропустите, если уже существует файл с новым именем:
ls -1 | perl -ne 'chomp;($n=$_)=~s/(\d+)/sprintf"%04d",$1/ge;rename$_,$n if$_ ne$n&&!-f$n'
С некоторой адаптацией решение цикла меньше может быть достигнуто даже с Sed:
ls -1 file.*.png | sed -r '/[0-9]{4}/d;h;:p;/[0-9]{4}/!s/([0-9]{1,3})/0\1/;tp;G;s/(.+)\n(.+)/mv \2 \1/' | sh
mv "$f" "$(perl -pe 's/(\d+)/sprintf"%04d",$1/ge' <<< "$f")"
(принятие Вас использует удар),
– glenn jackman
26.09.2011, 16:39
Здесь уже существует довольно много ответов, но я думал, что подброшу простой
rename 'file.' 'file.000' file.?.png
rename 'file.' 'file.00' file.??.png
rename 'file.' 'file.0' file.???.png
rename
утилита прибывает стандарт в каждый дистрибутив, о котором я знаю. Не столь необычный, как некоторые из других решений здесь, но простой легко помнить.
Первая строка берет file.1.png
и преобразовывает его в file.0001.png
.
Вторые преобразования file.10.png
кому: file.0010.png
, и третье делает file.100.png
в файл 0100.png.
4 цифры уже сделаны.
util-linux
так не, это не находится на Mac OS X.
– don_crissti
29.06.2016, 21:52