*
  Мысли   Галерея   Проекты   Тексты  
  Мысли   Галерея   Проекты   Тексты  
Giver: Веселые переименования  (2008-05-30 13:07:03)

Задача стояла — переименовать все файлы из .. c суффиксом jpg в файлы вида 00001.jpg и так далее. Делается это одной строчкой на баш:

C=0;for a in ../*.jpg;do C=$(printf "%04d" $(($C+1))); mv "$a" $C.jpg;done

Ничего особо сложного нет, просто заводим счетчик и понемного инкрементируем его. Функция printf занимается дополнением нулей. Иногда еще возникает задача просто сменить у файлов суффикс, или просто какую-нибудь простую замену, можно воспользоваться такой коммандой:

for a in *;do mv "$a" "`echo $a | sed -e 's/dat/avi/'`";done

Ну и последнее, есть множество файлов, которые нужно разложить по каталогам по определенному принципу, ну скажем по первой букве:

for a in *;do C=`echo $a | cut -c 1 `;[ -d $C ] || mkdir $C;mv "$a" $C/;done

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

for a in *;do C=`date -r "$a" +%y.%m.%d`;[ -d $C ] || mkdir $C;mv "$a" $C/;done

Фантазировать на эту тему можно безконечно. Но особенно приятно, когда shell избавляет от скучной ручной работы лишь одной строкой.


Имя:
Комментарий: