如何在linux中重命名文件以从文件名中删除某些字符?
例如,
将My123File.txt重命名为My123.txt
答案 0 :(得分:9)
如果你只使用通配符(不是完整的正则表达式),那么你可能会尝试像
这样的东西f='My123File.txt'
mv $f ${f/File/}
此类shell扩展记录在here。
如果你真的需要正则表达式,请尝试
f='My123File.txt'
mv $f $(echo $f | sed -e 's/File//')
答案 1 :(得分:4)
用户重命名,这是一个测试:
$ touch My123File.txt
$ rename 's/File//' My123File.txt
请参阅man rename
。 rename
支持regexp,因此您可以执行此操作 - 执行安全的地方,例如/ 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
答案 2 :(得分:0)
使用mmv,这是一个简单的命令。它还支持翻译,例如降低位置参数。
mmv '*File.txt' '#1.txt'