我有一个bash脚本,我试图替换文件名中的点,并用下划线替换它们,使扩展名保持不变(我在Centos 6 btw上)。从下面的输出中可以看到,该脚本在有一个点要替换的情况下起作用,但是在唯一的点是扩展名的情况下,该脚本仍会尝试重命名该文件,而不是忽略它。谁能指出我应该如何更好地处理这个问题?谢谢你的帮助。
我的(错误的)脚本:
#!/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
。