8

У меня есть каталог, и некоторые расширения файлов указаны в верхнем регистре (.JPG) вместо строчных.

Я хочу убедиться, что каждый файл имеет расширение .jpg. Как бы я сделал это из командной строки?

5 ответов5

15

Использование расширения параметров оболочки:

for f in *.JPG; do
    mv "${f}" "${f%%.JPG}.jpg"
done

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

10

Если вы можете использовать внешние инструменты (не только bash), проверьте команду rename !

rename .JPG .jpg *

rename является частью util-linux .

3

Если у вас есть пробелы в именах файлов:

for f in *.JPG; do [[ -f "${f}" ]] && mv "${f}" "${f/%JPG/jpg}"; done
2

Я бы посоветовал взглянуть на команду mmv . Он подходит именно для такого рода задач. В вашем сценарии это будет:

#> mmv "*.JPG" "#1.jpg"

Страница man полна примеров, так что вам не нужно время, чтобы привыкнуть к ней.

В системах Debian его можно установить с помощью:

#> aptitude install mmv
0

если у вас нет пробелов в именах файлов:

for f in *.JPG; do mv $f `echo $f | sed 's/JPG$/jpg/'`; done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .