2014-02-07 2 views
1

Когда я копирую файлы с камеры на свой компьютер, расширение имени файла является верхним регистром. Я нашел это question and answer, но предлагаемое решение не работает.Как переименовать файлы в массовом порядке из командной строки?

Мой вопрос в том, почему предлагаемое решение не работает и как я могу переименовать файлы, так что я только изменяю имя файла, создавая расширение в нижнем регистре?

ПРИМЕЧАНИЕ. Файлы хранятся на NAS (Synology DS1813 +).

Вот моя попытка переименовать файлы:

$ ls 
IMG_8809.JPG IMG_8813.JPG IMG_8817.JPG IMG_8821.JPG IMG_8825.JPG IMG_8829.JPG IMG_8833.JPG IMG_8837.JPG IMG_8841.JPG IMG_8845.JPG IMG_8849.JPG Thumbs.db 
IMG_8810.JPG IMG_8814.JPG IMG_8818.JPG IMG_8822.JPG IMG_8826.JPG IMG_8830.JPG IMG_8834.JPG IMG_8838.JPG IMG_8842.JPG IMG_8846.JPG IMG_8850.JPG 
IMG_8811.JPG IMG_8815.JPG IMG_8819.JPG IMG_8823.JPG IMG_8827.JPG IMG_8831.JPG IMG_8835.JPG IMG_8839.JPG IMG_8843.JPG IMG_8847.JPG IMG_8851.JPG 
IMG_8812.JPG IMG_8816.JPG IMG_8820.JPG IMG_8824.JPG IMG_8828.JPG IMG_8832.JPG IMG_8836.JPG IMG_8840.JPG IMG_8844.JPG IMG_8848.JPG IMG_8852.JPG 
$ find . -name '*.*' -exec sh -c 'a=$(echo {} | sed -r "s/([^.]*)\$/\L\1/"); [ "$a" != "{}" ] && mv "{}" "$a" ' \; 
mv: ‘./IMG_8835.JPG’ and ‘./IMG_8835.jpg’ are the same file 
mv: ‘./IMG_8822.JPG’ and ‘./IMG_8822.jpg’ are the same file 
mv: ‘./IMG_8830.JPG’ and ‘./IMG_8830.jpg’ are the same file 
mv: ‘./IMG_8850.JPG’ and ‘./IMG_8850.jpg’ are the same file 
mv: ‘./IMG_8820.JPG’ and ‘./IMG_8820.jpg’ are the same file 
mv: ‘./IMG_8826.JPG’ and ‘./IMG_8826.jpg’ are the same file 
mv: ‘./IMG_8847.JPG’ and ‘./IMG_8847.jpg’ are the same file 
mv: ‘./IMG_8816.JPG’ and ‘./IMG_8816.jpg’ are the same file 
mv: ‘./IMG_8819.JPG’ and ‘./IMG_8819.jpg’ are the same file 
mv: ‘./IMG_8814.JPG’ and ‘./IMG_8814.jpg’ are the same file 
mv: ‘./IMG_8810.JPG’ and ‘./IMG_8810.jpg’ are the same file 
mv: ‘./IMG_8817.JPG’ and ‘./IMG_8817.jpg’ are the same file 
mv: ‘./IMG_8809.JPG’ and ‘./IMG_8809.jpg’ are the same file 
mv: ‘./IMG_8851.JPG’ and ‘./IMG_8851.jpg’ are the same file 
mv: ‘./IMG_8844.JPG’ and ‘./IMG_8844.jpg’ are the same file 
mv: ‘./IMG_8818.JPG’ and ‘./IMG_8818.jpg’ are the same file 
mv: ‘./IMG_8823.JPG’ and ‘./IMG_8823.jpg’ are the same file 
mv: ‘./IMG_8848.JPG’ and ‘./IMG_8848.jpg’ are the same file 
mv: ‘./IMG_8842.JPG’ and ‘./IMG_8842.jpg’ are the same file 
mv: ‘./IMG_8815.JPG’ and ‘./IMG_8815.jpg’ are the same file 
mv: ‘./IMG_8837.JPG’ and ‘./IMG_8837.jpg’ are the same file 
mv: ‘./IMG_8827.JPG’ and ‘./IMG_8827.jpg’ are the same file 
mv: ‘./IMG_8825.JPG’ and ‘./IMG_8825.jpg’ are the same file 
mv: ‘./IMG_8840.JPG’ and ‘./IMG_8840.jpg’ are the same file 
mv: ‘./IMG_8812.JPG’ and ‘./IMG_8812.jpg’ are the same file 
mv: ‘./IMG_8811.JPG’ and ‘./IMG_8811.jpg’ are the same file 
mv: ‘./IMG_8836.JPG’ and ‘./IMG_8836.jpg’ are the same file 
mv: ‘./IMG_8828.JPG’ and ‘./IMG_8828.jpg’ are the same file 
mv: ‘./IMG_8832.JPG’ and ‘./IMG_8832.jpg’ are the same file 
mv: ‘./IMG_8839.JPG’ and ‘./IMG_8839.jpg’ are the same file 
mv: ‘./IMG_8831.JPG’ and ‘./IMG_8831.jpg’ are the same file 
mv: ‘./IMG_8824.JPG’ and ‘./IMG_8824.jpg’ are the same file 
mv: ‘./IMG_8813.JPG’ and ‘./IMG_8813.jpg’ are the same file 
mv: ‘./IMG_8843.JPG’ and ‘./IMG_8843.jpg’ are the same file 
mv: ‘./IMG_8846.JPG’ and ‘./IMG_8846.jpg’ are the same file 
mv: ‘./IMG_8829.JPG’ and ‘./IMG_8829.jpg’ are the same file 
mv: ‘./IMG_8821.JPG’ and ‘./IMG_8821.jpg’ are the same file 
mv: ‘./IMG_8838.JPG’ and ‘./IMG_8838.jpg’ are the same file 
mv: ‘./IMG_8833.JPG’ and ‘./IMG_8833.jpg’ are the same file 
mv: ‘./IMG_8834.JPG’ and ‘./IMG_8834.jpg’ are the same file 
mv: ‘./IMG_8845.JPG’ and ‘./IMG_8845.jpg’ are the same file 
mv: ‘./IMG_8841.JPG’ and ‘./IMG_8841.jpg’ are the same file 
mv: ‘./IMG_8852.JPG’ and ‘./IMG_8852.jpg’ are the same file 
mv: ‘./IMG_8849.JPG’ and ‘./IMG_8849.jpg’ are the same file 
$ ls 
IMG_8809.JPG IMG_8813.JPG IMG_8817.JPG IMG_8821.JPG IMG_8825.JPG IMG_8829.JPG IMG_8833.JPG IMG_8837.JPG IMG_8841.JPG IMG_8845.JPG IMG_8849.JPG Thumbs.db 
IMG_8810.JPG IMG_8814.JPG IMG_8818.JPG IMG_8822.JPG IMG_8826.JPG IMG_8830.JPG IMG_8834.JPG IMG_8838.JPG IMG_8842.JPG IMG_8846.JPG IMG_8850.JPG 
IMG_8811.JPG IMG_8815.JPG IMG_8819.JPG IMG_8823.JPG IMG_8827.JPG IMG_8831.JPG IMG_8835.JPG IMG_8839.JPG IMG_8843.JPG IMG_8847.JPG IMG_8851.JPG 
IMG_8812.JPG IMG_8816.JPG IMG_8820.JPG IMG_8824.JPG IMG_8828.JPG IMG_8832.JPG IMG_8836.JPG IMG_8840.JPG IMG_8844.JPG IMG_8848.JPG IMG_8852.JPG 

Я также пробовал эту команду с теми же результатами:

$ rename s/.JPG/.jpg/ *.JPG 
IMG_8809.JPG not renamed: IMG_8809.jpg already exists 
IMG_8810.JPG not renamed: IMG_8810.jpg already exists 
IMG_8811.JPG not renamed: IMG_8811.jpg already exists 
IMG_8812.JPG not renamed: IMG_8812.jpg already exists 
IMG_8813.JPG not renamed: IMG_8813.jpg already exists 
IMG_8814.JPG not renamed: IMG_8814.jpg already exists 
IMG_8815.JPG not renamed: IMG_8815.jpg already exists 
IMG_8816.JPG not renamed: IMG_8816.jpg already exists 
IMG_8817.JPG not renamed: IMG_8817.jpg already exists 
IMG_8818.JPG not renamed: IMG_8818.jpg already exists 
IMG_8819.JPG not renamed: IMG_8819.jpg already exists 
IMG_8820.JPG not renamed: IMG_8820.jpg already exists 
IMG_8821.JPG not renamed: IMG_8821.jpg already exists 
IMG_8822.JPG not renamed: IMG_8822.jpg already exists 
IMG_8823.JPG not renamed: IMG_8823.jpg already exists 
IMG_8824.JPG not renamed: IMG_8824.jpg already exists 
IMG_8825.JPG not renamed: IMG_8825.jpg already exists 
IMG_8826.JPG not renamed: IMG_8826.jpg already exists 
IMG_8827.JPG not renamed: IMG_8827.jpg already exists 
IMG_8828.JPG not renamed: IMG_8828.jpg already exists 
IMG_8829.JPG not renamed: IMG_8829.jpg already exists 
IMG_8830.JPG not renamed: IMG_8830.jpg already exists 
IMG_8831.JPG not renamed: IMG_8831.jpg already exists 
IMG_8832.JPG not renamed: IMG_8832.jpg already exists 
IMG_8833.JPG not renamed: IMG_8833.jpg already exists 
IMG_8834.JPG not renamed: IMG_8834.jpg already exists 
IMG_8835.JPG not renamed: IMG_8835.jpg already exists 
IMG_8836.JPG not renamed: IMG_8836.jpg already exists 
IMG_8837.JPG not renamed: IMG_8837.jpg already exists 
IMG_8838.JPG not renamed: IMG_8838.jpg already exists 
IMG_8839.JPG not renamed: IMG_8839.jpg already exists 
IMG_8840.JPG not renamed: IMG_8840.jpg already exists 
IMG_8841.JPG not renamed: IMG_8841.jpg already exists 
IMG_8842.JPG not renamed: IMG_8842.jpg already exists 
IMG_8843.JPG not renamed: IMG_8843.jpg already exists 
IMG_8844.JPG not renamed: IMG_8844.jpg already exists 
IMG_8845.JPG not renamed: IMG_8845.jpg already exists 
IMG_8846.JPG not renamed: IMG_8846.jpg already exists 
IMG_8847.JPG not renamed: IMG_8847.jpg already exists 
IMG_8848.JPG not renamed: IMG_8848.jpg already exists 
IMG_8849.JPG not renamed: IMG_8849.jpg already exists 
IMG_8850.JPG not renamed: IMG_8850.jpg already exists 
IMG_8851.JPG not renamed: IMG_8851.jpg already exists 
IMG_8852.JPG not renamed: IMG_8852.jpg already exists 

EDIT

Смотрите эту question о файловых системах и чувствительности к регистру вопросы.

+2

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

+0

Неправильный синтаксис переименования, необходимо избегать периодов 'rename s/\. JPG/\. Jpg/* .JPG' – BroSlow

+1

' Файлы хранятся на NAS (Synology DS1813 +). '- Ваша файловая система не поддерживает нечувствительные к регистру имена файлов. – devnull

ответ

0

Друг указал мне на this. Связанная статья имеет длину 8 страниц, но в ее пояснении она подробно. Короткий вариант ответа является:

... And that brings me to what I really want to discuss, which is how 
CIFS Server (Samba) deals with this. 

As you would expect from an application that was grown to bridge 
the gap between the Unix and Windows worlds, it is very flexible. 
This is both good and bad - with flexibility comes responsibility, 
and sometimes not a little confusion. There are four configuration 
options that Samba provides to allow one to define its behavior 
when dealing with matters of 'case': 

preserve case = (yes/no) 
short preserve case = (yes/no) 
default case = (upper/lower) 
case sensitive = (yes/no) 

решением является configure Samba обрабатывать случай sensitivty (или консервирования случае проблем) способ, который работает для ваших конкретных потребностей.

Смежные вопросы