Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Регулярные выражения- массовое переименовывание файлов  (Прочитано 1155 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Rydj

  • Автор темы
  • Участник
  • *
  • Сообщений: 158
    • Просмотр профиля
Добрый вечер помогите пожалуйста у меня такая проблема: нужно быстро переименовать очень много файлов заменить в именах надпись test на good.
Например есть файлы с названием trtest-11.jpg gg_test.jpg и т.д. и надо переименовать в trgood.jpg gg_good.jpg

Оффлайн Vovans

  • Активист
  • *
  • Сообщений: 311
  • zenway.ru
    • Просмотр профиля
    • Про Linux по-русски
#!/bin/sh

# Определяем глубину вложенности директорий
depth=$((`find "$1" -type d -print | \
     sed -E 's/[^\/]+//g' | \
     sort | tail -n 1 | \
     wc -c`+1));
# Макрос, переименовывающий файлы и директории
 replacer='new="`dirname "{}"`/`basename "{}" | sed "s/test/good/g"`"; if [ "$new" != "{}" ]; then mv "{}" "$new"; fi;';
# Обходим все уровни вложенности
 while [ $depth -ge 0 ];
do
   # Находим и заменяем
   find "$1" -depth $depth -and -name '* *' -print -exec sh -c "$replacer" \;
   # Меняем уровень вложенности
   depth=$(($depth-1));
 done;

chmod +x mass-replace.sh
$ ./mass-replace.sh ~/xlam

Пользователь решил продолжить мысль 15 Сентября 2011, 23:59:05:
http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO-12.html

     #!/bin/bash
     # renames.sh
     # basic file renamer

     criteria=$1
     re_match=$2
     replace=$3
     
     for i in $( ls *$criteria* );
     do
         src=$i
         tgt=$(echo $i | sed -e "s/$re_match/$replace/")
         mv $src $tgt
     done

Сохраняем в файл, делаем исполняемым и запускаем так:

./run.sh путь_к_файлам test good
« Последнее редактирование: 16 Сентября 2011, 00:01:20 от Vovans »

Оффлайн alexander.pronin

  • Старожил
  • *
  • Сообщений: 2539
    • Просмотр профиля
Используйте утилиту rename
и все станет проще.

 

Страница сгенерирована за 0.021 секунд. Запросов: 22.