Использование Bash для перемещения цифр из определенного места в имени файла - PullRequest
0 голосов
/ 02 февраля 2019

У меня есть имена файлов в следующем формате:

images.jpeg-028

Я хотел бы преобразовать имя файла каждого файла в каталоге из указанного выше формата в следующий формат:

images-028.jpeg

Все числа в конце имени файла состоят из трех цифр.

Исходя из этой темы на другом форуме, я думаю о чем-то вроде:

for i in *; do mv "$i"\-(\d+) \-(\d+)"$i"; done

Но я открыт для других подходов, основанных на Bash.

1 Ответ

0 голосов
/ 02 февраля 2019

Выполнив бесчисленные задачи по переименованию файлов с использованием циклов for в bash, я нахожу полезной утилиту rename.

Это должно работать для вашего случая:

rename 's/\.jpeg-(\d+)/-$1.jpeg/g' images.jpeg-*

Примечание: я имею в виду модуль File::Rename из Perl, , а не , утилиту rename, которая включена во многие дистрибутивы Linux в пакете util-linux.

Если у вас уже есть версия от util-linux, вы можете прочитать это:

Получите утилиту переименования Perl вместо встроенного переименования .

Есливы настроены на использование чистого bash решения или просто не хотите хлопот с установкой rename, это должно работать:

for i in images.jpeg-*; do
   mv "$i" "images-${i##*-}.jpeg"
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...