Простой скрипт
#!/bin/bash
for file in ~/path/to/images/*; do
TYPE=$(file --mime-type -b "$file" | cut -f2 -d/);
if [[ ! $file =~ \.$TYPE ]]; then
echo mv -v "$file" "$file.$TYPE";
fi
done
находит расширение каждого $file с помощью команды file (определить тип файла) .
--mime-type, --mime-encoding опция, используемая для печати только указанного элемента.
-b, --brief вариант, используемый для того, чтобы не добавлять имена файлов в выходные строки (короткий режим). См. Также man-файл для получения дополнительной информации.
Теперь мы извлекли тип файла и сохранили его в переменной TYPE.
man file Используется для печати просто тип расширения, Как png в image/png, выводит результат file --mime-type -b "$file".
-f2 печатает вторую часть с разделителем / (-d) между полями. ex: напечатайте png в image/png. См. Также man file для получения дополнительной информации.
Мы пропустили все существующие расширения с простым регулярным выражением, используя оператор =~ внутри теста [[...]] в условии, если условие:
if [[ $file =~ \.$TYPE ]];
Пока $file - это ваши имена файлов изображений, а $TYPE - его расширение, которое мы нашли и сохранили в TYPE переменная в TYPE=$(file --mime-type -b "$file" | cut -f2 -d/);.
Затем мы перейдем к переименованию всех файлов, которые имеют расширение с собой.
! ссылаются на: если файл не имеет расширения расширения с самим собой, тогда переименуйте это и добавьте его расширение в конце его имени.
В этой строке На самом деле мы добавляем расширение файла (если $file не является расширением с самим собой) в конце файла $file с помощью команды mv. mv также используется для переименования Files / Directory.
Затем мы переименуем $file в $file.$TYPE. Например, файл 1 будет переименован в 1.png, если его тип файла был png.
in theory actually above mv command do this: rename filename -> filename.filetype
Это имя файла, сохраненное в переменной $file, и тип файла, сохраненный в переменной $TYPE.
Скопируйте и вставьте скрипт в gedit и сохраните его с вашим любимым именем ex: batchRename, затем откройте терминал и запустите его следующую команду:
bash batchRename
НЕ забывайте, прежде чем запускать скрипт, проверьте правильный путь к изображению /path/to/images/ и переименуйте свои файлы после проверки результата с помощью команды echo, удалите echo из начало echo mv -v "$file" "$file.$TYPE" и снова запустить сценарий и наслаждаться переименованием;)