Intereting Posts
Как переключить почтовые ящики в mutt? Команда dd выходит из строя с ошибкой «Вход / выход» при записи USB-накопителя Ошибка установки установки vboxdrv при установке VirtualBox на CentOS 7 Как исправить систему, если паника ядра? Как проверить ввод соответствует определенному формату apt-get продолжает пытаться установить пакет, который уже установлен Найти все репозитории git, которые не содержат ни одного из .gitignore и .gitattributes RHEL6 Не удалось загрузить файл кикстарта распаковать каталог * .tgz файлов с помощью шаблона Как просмотреть результаты поиска htop как получить 32-битные заголовки ядра в 64-разрядной установке debian Невозможно использовать ключи мультимедиа Google Play Music 14.04? Как перезагрузить xserver после изменения раскладки клавиатуры? Ярлык клавиатуры для переключения между левой и правой рукой мыши в Cinnamon? /usr/include/stdio.h:140: ошибка синтаксического анализа перед `__gnuc_va_list '

Как переименовать файлы, обменивая подстроки в именах файлов?

У меня есть файлы, такие как ABC_asd_f.txt , DEF_qwe_r.txt , …

Как я могу обменивать верхние регионы перед первым подчеркиванием с нижними строчками после? Таким образом, ABC_asd_f.txt становится asd_f_ABC.txt , DEF_qwe_r.txt становится qwe_r_DEF.txt , …

Используйте perl rename. Сначала используйте флаг -n для сухого хода.

 rename -n 's/^(...)_(..._.)/$2_$1/' * 

Тогда, если вы счастливы, запустите его по-настоящему.

 rename 's/^(...)_(..._.)/$2_$1/' * 

объяснение

Это использует группы захвата.

  • rename 's/foo/bar/' * : заменить foo на bar для всех файлов * .
  • ^(...)_(..._.) : начиная с начала строки ^ захватывать первые три символа (...) , пропускать _ , а затем записывать следующие пять символов, где четвертый символ подчеркивания (..._.) .
  • $2_$1 : замените строку выше на группы захвата в обратном порядке (т. Е. Второй, символ подчеркивания, затем первый).

Переименовать версию

Есть два rename в Linux-land. Вы можете определить, переименован ли Perl следующим образом.

 $ rename --version perl-rename 1.9 

Другой даст другой результат.

 $ rename --version rename from util-linux 2.28