среда, 29 апреля 2015 г.

Переименование имён файлов в консоли...

Об одновременном редактировании имён сразу  многих файлов. Разбирал фотоколлекцию, и понадобилось разом переимновать в порядке возрастания...  Сначала нужно было заставить убрать все незначащие символы:

for i in *.jpg ; do mv "$i" `echo $i | cut -d_ -f5` ; done

Тут просто: '-d_' задаёт символ разделения колонок, символом прочерка, а '--f5' собственно задаёт номер колонки.

Дальше интереснее: как заставить вернуть ведущие нули, если их нет ? Дело в том, что linux-утилиты воспринимают, к примеру, число 16 > 161. Что делать ? Нашёл такой ответ:

for a in *.jpg; do b=$(printf %03d.jpg ${a%.jpg}) ; mv $a $b ; done

UPD:
echo 123456789 | cut -c1-3
123

echo 123456789 | rev | cut -c1-3 | rev
отсюда

Или даже grep

$ echo "превед" | grep -Eo '^.{3}'
пре
$ echo "превед" | grep -Eo '.{3}$'
вед
отсюда

UPD2:
И вот еще немножко, теперь про конткантенацию с изменением размера картинок:
montage *.jpg -tile 2x2 -geometry 300x200\!+0+0 out.jpg
И еще тут, и тут...

Спасибо, этим ссылкам:
убрать первые пять символов из имени файлов
переименование файлов по порядку
linux shell script to add leading zeros to file names
Ну а этому, спасибо за последнюю ссылку...

Ярлыки: ,

Комментарии: 0:

Отправить комментарий

Примечание. Отправлять комментарии могут только участники этого блога.

Подпишитесь на каналы Комментарии к сообщению [Atom]

<< Главная страница