У меня есть скрипт bash, который я пытаюсь получить, чтобы заменить точки в именах файлов и заменить их подчеркиванием, оставив расширение без изменений (я на Centos 6, кстати). Как видно из приведенного ниже вывода, сценарий работает, когда необходимо заменить точку, но в тех случаях, когда единственной точкой является расширение, сценарий все равно пытается переименовать файл, а не игнорировать его. Кто-нибудь может указать, как я должен справиться с этим лучше? Спасибо за любую помощь.
Мой (неисправный) скрипт:
#!/bin/bash
for THISFILE in *
do
filename=${THISFILE%\.*}
extension=${THISFILE##*\.}
newname=${filename//./_}
echo "mv $THISFILE ${newname}.${extension}"
#mv $THISFILE ${newname}.${extension}
done
Пример ввода:
1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg
Wear-Plates.jpg
Вывод:
mv 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg 1_3MN-Pin-Eurotunnel-Stw505_51_024-EGS1-130x130.jpg
mv Wear-Plates_jpg.Wear-Plates_jpg Wear-Plates_jpg.Wear-Plates_jpg
tar.gz
файлы? Вы бы хотели, чтобы они решилиfile.tar.gz
, а неfile_tar.gz
.