Как переименовать папки по шаблону i+100?

Есть много папок с именами 200, 201,202… Необходимо переименовать их в 300, 301,302 и так далее. Как это можно сделать средствами bash?
  • Вопрос задан
  • 4237 просмотров
Пригласить эксперта
Ответы на вопрос 4
Dair_Targ
@Dair_Targ
mkdir tmp/
mv {200..100500} tmp/
for i in {200..100500}; do mv tmp/$i ./$(expr $i + 100); done
rm tmp/
Ответ написан
barker
@barker
Не понял причём тут bash и зачем для этого какие-то циклы, скрипты на perl в 10 (O_o) строк и т.п., если есть 100500 однострочных решений разными стандартными внешними утилитами. А в данном случае вообще можно переименовать просто командой rename:
rename 2 3 2??
Ответ написан
SLY_G
@SLY_G
журналист, переводчик, программист, стартапщик
Если perl устроит, то вот программка для переименования, первую цифру в названии увеличивает на один.
Первый параметр — директория, типа
rename.pl /path/to/dir

#!/usr/bin/perl

$dir = $ARGV[0];
exit if ( !-d $dir );
opendir DIR, $dir;
for $old ( grep -d "$dir/$_", readdir DIR ) {
  next unless ( $old =~ /^(\d)(\d+)/ );
  $new = ( $1 + 1 )."$2";
  rename( "$dir/$old", "$dir/$new" );
}

Ответ написан
@kavabangaungava
Подскажите, а как произвести групповое переименование файлов, чтобы последний символ не был затронут. Например надо переименовать filname[x] в new[x]
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы