我该如何在Linux中重命名文件并删除文件名中的某些字符?
例如,
将My123File.txt重命名为My123.txt。
如果你只使用通配符(而不是完整的正则表达式),那么你可以尝试类似以下的内容:
f='My123File.txt'
mv $f ${f/File/}
这种类型的shell扩展在这里有文档记录。
如果您确实需要正则表达式,请尝试
f='My123File.txt'
mv $f $(echo $f | sed -e 's/File//')
用户重命名,下面是一个测试:
$ touch My123File.txt
$ rename 's/File//' My123File.txt
请参考man rename
。 rename
支持正则表达式,因此您可以执行以下操作 - 在安全的地方执行,例如/tmp或其他地方:
cd /tmp
rm *.txt
touch My123File.txt My456File.txt
ls *.txt
rename 's/([A-Za-z]+)(\d+)(\w+)/$3-999-$2-$1/' *.txt
ls *.txt
My123File.txt My456File.txt
File-999-123-My.txt File-999-456-My.txt
使用mmv,只需要一个命令就可以了,而且更简单易用。它还支持翻译功能,例如将位置参数变为小写。
mmv '*File.txt' '#1.txt'
rename File '' My123File.txt
,针对第二行。 - jjlinman rename
。请查看我的编辑以获取示例。 - icyrock.comrename
说得没错。然而,CentOS的rename
没有正则表达式的功能。 - jjlin