如何快速重命名文件夹中的一堆文件
我有一堆名为'something_12345.doc'(任何5位数字,不一定是12345)的文件。我需要将它们全部重命名为“something.doc”。这是一个Unix文件系统,我怀疑只有一个命令就可以做到这一点...任何Unix正则表达式guru都可以帮忙吗?如何快速重命名文件夹中的一堆文件
谢谢!
rename 's/_[0-9][0-9][0-9][0-9][0-9]//' *.doc
我在FreeBSD上,因此这并不会工作。 庆典:在/ usr/local/bin中/重命名:参数列表太长 我无法弄清楚如何设置变量命名 – user261231 2010-01-28 21:34:44
想通了。 for i in [A-Za-z] * _ [0-9] [0-9] [0-9] [0-9] [0-9] .doc; do mv“$ i”“$ {i/_ [0-9] [0-9] [0-9] [0-9] [0-9]}”;完成 – user261231 2010-01-28 22:14:04
@OP,外壳已经出现在你的MV声明扩展你的模式为你,你不必再指定5位数字的模式。
for file in *_[0-9][0-9][0-9][0-9][0-9].doc
do
echo mv "$file" "${file%_*}.doc"
done
感谢ghostdog74和其他人! – user261231 2010-01-29 06:25:00
用sed
ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash
在FreeBSD上,你可能有兴趣在sysutils的/ renameutils端口。命令qmv
打开$ EDITOR并允许您在合理舒适的环境中指定所有文件重命名。我个人更喜欢qmv -fdo
(单列)格式。
你将剩下一个文件,基本上,你正在删除N-1文件并将第N个文件复制到'something.doc' - 这是你想要的吗? – dirkgently 2010-01-28 18:29:04
-1因为经常问*。你应该首先在SO上进行搜索。 – bortzmeyer 2010-01-30 21:30:50