2017-01-25 11 views
0

Я работаю со многими фотографиями на MacOSX 10.12. Чтобы сделать некоторые анализы изображений, мне нужно изменить формат с .JPG на .gif.Пакет удалять из двух файлов расширения

Использование ImageMagick Я сделал это относительно быстро, и теперь у меня есть несколько файлов с двойным расширением * .JPG.gif.

Я хотел бы удалить часть .JPG из имени файла, но по какой-то причине то, что я делаю, не работает. (Я должен сказать, что этот шаг, вероятно, не является критическим для того, что мне нужно сделать дальше, но поскольку у меня есть много файлов, упрощающих их имя, насколько это возможно, вероятно, лучше. Я также должен сказать, что у меня есть все права суперпользователя и ни одно из имен файлов фактически не содержит тормозов или пробелов, поэтому даже добавление «» к моему коду ничего не меняет.

Вот что я пытаюсь с помощью Баш скрипт:

#!/bin/bash 
    for file in /folder/*.JPG.gif 
      do 
      mv $file ${file#.JPG} 
      done 

Я понимаю, что этот код должен удалить .JPG часть из файла $ начиная матч с фронта имени файла. И все же, когда я вызываю команду ls, чтобы увидеть, выполнила ли программа то, что она должна была делать, все имена все еще существуют с двойным расширением.

Любая помощь очень ценится.

ответ

1

Измените команду mv так:

#!/bin/bash 
for file in /folder/*.JPG.gif 
     do 
     mv "$file" "${file/\.JPG}" 
     done 

Ваш исходный код использует расширение, которое удаляет текст с самого начала, а не в середине. Расширение выше удаляет внутри строки.

Обратите внимание, что это не очень надежный. Если у вас есть «.JPG» в вашем пути или именах файлов в любом месте, кроме как в конце ваших имен файлов, он не будет делать то, что вы хотите. Цитирование, даже если это не нужно в вашем случае на данный момент, по-прежнему является хорошей практикой, поскольку все меняется, а код получает копию и вставляет.

+0

Кстати, мне нравится этот источник как резюме различных форм расширения в bash: http://wiki.bash-hackers.org/syntax/pe. – Fred

+0

Спасибо Фреду, это решило мою проблему. – Cinghio