我有一个 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
Run Code Online (Sandbox Code Playgroud)
样本输入:
1.3MN-Pin-Eurotunnel-Stw505.51.024-EGS-130x130.jpg
Wear-Plates.jpg
Run Code Online (Sandbox Code Playgroud)
输出:
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
Run Code Online (Sandbox Code Playgroud)