Переименовать файлы для изменения знаков пунктуации и нумерации

Я надеялся, что кто-то с лучшими навыками regex может помочь мне с некоторыми файлами, которые мне нужно переименовать. Мне нужна команда для рекурсивного переименования большого количества jpg-файлов в Ubuntu.

Однако есть некоторые проблемы. Обычная группа файлов будет выглядеть как ani-estate-villas_1431640729_3.jpg , ani-estate-villa_3627544278_7.jpg и ani-estate-villa_3143254376_5.jpg

Мне нужно заменить все - на _ , удалить все числа и затем добавить нумерацию, которая сбрасывается в каждом каталоге. Таким ani_estate_villas_2.jpg , ani_estate_villas_3.jpg и та же группа файлов должна выглядеть как ani_estate_villas_1.jpg , ani_estate_villas_2.jpg , ani_estate_villas_3.jpg и то же самое с другими файлами в других каталогах.

Глубина рекурсии – это 1 или 2 каталога глубоко, поэтому вы можете найти directory/file.jpg или directory/directory/file.jpg это довольно много случайных.

Выполнение команды в каждом каталоге с jpgs также выполнимо, поэтому, если кто-нибудь имеет представление о том, как переименовать все файлы с этими характеристиками, будет хорошо. Несмотря на то, что одна команда более холодная, я бы очень признателен за несколько более повторяющееся решение, потому что вручную изменить 400+ jpg-файлов слишком много.

Я пробовал много вещей, но я даже не близок, даже не стоит его здесь. Я попытался использовать krename, но он удаляет мои файлы. Поэтому, если кто-то может указать мне в правильном направлении, я бы очень признателен!

  • Есть ли способ сказать системе сохранить папку в памяти?
  • Простая передача файлов
  • Как рекурсивно перемещать партии из 20 файлов в пронумерованные папки из папки из 1000 файлов
  • Имя файла Regex с несколькими цифрами
  • Командная строка Linux. Перемещение всех файлов и каталогов в каталог, за исключением некоторых файлов и каталогов
  • Повреждение имени файла
  • Как перемещать строку из одной строки в другую
  • Обратная сторона `tree` - восстанавливает структуру файлов и каталогов из содержимого текстового файла?
  • One Solution collect form web for “Переименовать файлы для изменения знаков пунктуации и нумерации”

    Вы можете использовать команду prename для переименования файлов на основе преобразования, написанного на Perl .

    Давайте начнем просто. Чтобы переименовать все файлы .jpg в каталоге, изменив все - на _ , мы можем просто использовать оператор s (мы также можем использовать tr ). Код Perl выполняется для преобразования каждого имени файла.

     prename 's!-!_!g' *.jpg 

    Чтобы изменить последовательность чисел в конце на простой счетчик, введем переменную счетчика. Я использую глобальную переменную $a как счетчик (введение дополнительных переменных сложнее). Регулярное выражение (\.[^/.]*)$ Соответствует расширению файла, а $1 в заменяющем тексте означает соответствие группы в скобках.

     prename 's!-!_!g; ++$a; s!_[0-9_]+(\.[^/.]*)$!_$a$1!' *.jpg 

    Обратите внимание, что файлы переименовываются в порядке, заданном аргументами имени файла, то есть порядок расширения *.jpg определяет нумерацию файлов.

    Кроме того, мы можем инициализировать счетчик явно с помощью блока BEGIN .

     prename 'BEGIN {$a = 1;} s!-!_!g; s!_[0-9_]+(\.[^/.]*)$!_$a$1!; ++$a;' *.jpg 

    Чтобы выполнить это в каждом подкаталоге текущего каталога, вызовите find .

     find -type d -exec sh -c 'cd "$1" && prename "$0" *.jpg' 's!-!_!g; ++$a; s!_[0-9_]+(\.[^/.]*)$!_$a$1!' {} \; 
    Interesting Posts

    Много трафика между серверами – откуда оно взялось?

    Программное обеспечение командной строки для синхронизации плейлистов на Android Phone?

    Добавить поле sid в вывод ps -f

    «Ошибка: не может быть раздел вне диска!», Хотя число секторов в порядке

    Является ли Mac OS X действительно совместимым с SUS?

    Изменение постоянной таблицы маршрутизации

    Imagemagick «конвертировать» текст в изображение: ReadTEXTImage: Assertion

    Невозможно подключиться к Интернету (даже пинговать собственный маршрутизатор) на любом дистрибутиве

    как обновить версию cURL openssl для PayPal IPN

    Может ли касификация case bash?

    Использование двух дисплеев на debian

    Неправильное количество свободного места на диске, которое видно после использования Gparted

    Как отформатировать CF-карту с помощью команды терминала?

    bash completion: как заполнить список хостов для определенного аргумента?

    Как я могу разделить строку на две строки, если длина больше 7 с помощью awk?

    Linux и Unix - лучшая ОС в мире.