Вот один из способов сделать это в Bash:
for i in *; do [ "${i/%MP3/mp3}" != "$i" ] && echo "$i" "${i/%MP3/mp3}"; done
Я использовал echo
здесь, чтобы сама команда ничего не делала, кроме печати пар имен файлов. Если этот список представляет изменения, которые вы хотите внести, то вы можете изменить echo
что-то подобное, mv -i --
что затем переместит ваши файлы (и предложит вам перед перезаписью).
Краткое объяснение:
В for
перебирает каждый файл соответствует по *
. Затем мы определяем, является ли расширение уже нижним регистром, если оно движется дальше, если нет, мы продолжаем его перемещать (или отображать его, в зависимости от обстоятельств). Здесь используются встроенные строковые операции Bash, о которых вы можете прочитать здесь: http://tldp.org/LDP/abs/html/string-manipulation.html
В зш:
Чтобы также заботиться
.Mp3
или.mP3
файлы:источник
Вы можете использовать команду переименования (имейте в виду, что есть две основные реализации с разными API). Например, чтобы изменить регистр расширений имен файлов с верхнего на нижний, попробуйте следующее:
с
rename
fromutil-linux
(иногда вызываетсяrename.ul
), предполагая, что.JPG
встречается только один раз в именах файловс
rename
изperl
(иногда называемыйprename
; несколько вариантов были опубликованы):Вот руководство для некоторых ребят о том, как он перешел от грязного скрипта bash к этой простой команде именно для вашего случая использования.
Еще одна причудливая команда для этого
pax
. Если вы используете ZSH для своей оболочки, вы также можете использоватьzmv
.источник
syntax error at (user-supplied code), near "."
, когда я запускаю эту команду.Используйте perl-rename , швейцарский армейский нож для переименования файлов с регулярными выражениями (в ubuntu это связано с пакетом perl в качестве имени):
Если вы осторожны, используйте опции -n и -v для переименования perl, чтобы увидеть, что он на самом деле сделает.
источник
Вам нужен скрипт, потому что «расширения» в Linux - это на самом деле просто части строки имени файла. Вы должны выполнить некоторые манипуляции со строками в скрипте, чтобы получить новое имя.
Двойные кавычки важны, если у вас есть имена файлов с пробелами в них. Я думал, что некоторые из двойных кавычек были немного неочевидны.
источник
В Баш:
источник
сначала сделайте резервную копию ваших файлов! Вы можете использовать однострочник Python:
РЕДАКТИРОВАТЬ:
Вот подробное объяснение того, как на самом деле работает однострочник. Используя
python -c
мы передаем команду интерпретатору python. После импорта библиотекos
дляrename
функции иglob
для списка файлов нам нужно перебрать список файлов в данном каталоге, который я назвалPATH_TO_YOUR_DIRECTORY
, например, что-то вроде./*
для всего в текущем каталоге.К сожалению, в однострочном синтаксисе
for
циклы не работают послеimport
нотации, поэтому нам нужно использовать скобочную нотацию. Т.е. для каждого имени файла или каталога,glob
которое дает нам по указанному пути в виде строки, мы заменяем * .MP3 на * .mp3.Поскольку OP не упоминал рекурсивный поиск, я не включил его в первую очередь.
источник