我有一堆名为'something_12345.doc'的文件(任何5位数字,不一定是12345)。我需要将它们全部重命名为'something.doc'。这是一个Unix文件系统,我怀疑只用一个命令就可以做到这一点......任何Unix正则表达式大师都能帮忙吗?
谢谢!
答案 0 :(得分:3)
@OP,shell已经为你扩展了你的模式,在你的mv语句中,你不必再指定5位数的模式。
for file in *_[0-9][0-9][0-9][0-9][0-9].doc
do
echo mv "$file" "${file%_*}.doc"
done
答案 1 :(得分:3)
这个问题在SO上被问了很多次:
我的个人偏好是mmv。但请参阅“Mass Rename/copy/link Tools”。
答案 2 :(得分:2)
rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc
答案 3 :(得分:1)
使用sed
ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash
答案 4 :(得分:0)
是的,rename
采用perl样式的正则表达式。做一个man rename
。
答案 5 :(得分:0)
在FreeBSD上,您可能对sysutils / renameutils端口感兴趣。命令qmv
打开$ EDITOR,允许您在合理舒适的环境中指定所有文件重命名。我个人更喜欢qmv -fdo
(单列)格式。