Unix 如何快速重命名文件夹中的一组文件

Unix 如何快速重命名文件夹中的一组文件,unix,rename,batch-rename,Unix,Rename,Batch Rename,我有一堆文件名为'something_12345.doc'(任何5位数字,不一定是12345)。我需要将它们全部重命名为'something.doc'。这是一个Unix文件系统,我想只有一个命令就可以做到这一点。。。任何Unix正则表达式专家都能提供帮助吗 谢谢 是,rename采用perl风格的正则表达式。执行一个命令。是,重命名采用perl风格的正则表达式。做一个。rename's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/'*.docren

我有一堆文件名为'something_12345.doc'(任何5位数字,不一定是12345)。我需要将它们全部重命名为'something.doc'。这是一个Unix文件系统,我想只有一个命令就可以做到这一点。。。任何Unix正则表达式专家都能提供帮助吗


谢谢

是,
rename
采用perl风格的正则表达式。执行一个命令。

是,
重命名
采用perl风格的正则表达式。做一个。

rename's/[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]/'*.doc
rename's/[0-9][0-9][0-9][0-9][0-9]/'*.doc code>@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

@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

这个问题被问了很多次,所以:


我个人的偏好是。但请参见“

这个问题被问了很多次,所以:

我个人的偏好是。但请参见“”

使用sed

ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash
使用sed

ls *.doc | sed 's:\([^0-9_]\)[0-9_][0-9_]*\.doc:$(mv & \1.doc)' | /bin/bash

在FreeBSD上,您可能对sysutils/renameutils端口感兴趣。命令
qmv
打开$EDITOR,允许您在一个舒适的环境中指定所有文件重命名。我个人更喜欢
qmv-fdo
(单列)格式。

在FreeBSD上,您可能对sysutils/renameutils端口感兴趣。命令
qmv
打开$EDITOR,允许您在一个舒适的环境中指定所有文件重命名。我个人更喜欢
qmv-fdo
(单列)格式。

您将只剩下一个文件,基本上,您正在删除N-1个文件,并将第N个文件复制到
something.doc
——这是您想要的吗?-1因为经常被问到。你应该先搜索。你只剩下一个文件,基本上,你正在删除N-1个文件,然后将第N个文件复制到
某物上。doc
——这就是你想要的吗?-1因为经常被问到。你应该先搜索。我在FreeBSD上,所以这不起作用。。bash:/usr/local/bin/rename:参数列表太长了,我想不出如何为rename设置变量。我已对此进行了配置。[A-Za-z]*.[0-9][0-9][0-9][0-9][0-9][0-9]中的i;做mv“$i”“${i/[0-9][0-9][0-9][0-9][0-9][0-9]}”;Don我在FreeBSD上,所以这不起作用。。bash:/usr/local/bin/rename:参数列表太长了,我想不出如何为rename设置变量。我已对此进行了配置。[A-Za-z]*.[0-9][0-9][0-9][0-9][0-9][0-9]中的i;做mv“$i”“${i/[0-9][0-9][0-9][0-9][0-9][0-9]}”;doneThanks ghostdog74和其他所有人!谢谢鬼怪74和其他人!不总是这样。在RH系统上,它做一个简单的字符串替换。在RH系统上,它进行简单的字符串替换。