用文件名中的下划线替换点,保留扩展名不变
我有一个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