如何从命令行按顺序重命名多个文件?

如何从命令行按顺序重命名多个文件?

如何重命名文件,如下所示

AS1100801000002.RAW7AGS 
AS1100801001008.RAW7AH4
AS1100801002001.RAW7AH9
AS1100801003002.RAW7AHE
AS1100801004009.RAW7AHT
AS1100801005002.RAW7AHY
AS1100801010002.RAW7AJ3

改成新名字

AS1.txt
AS2.txt
AS3.txt
AS4.txt
AS5.txt
AS6.txt
AS7.txt

答案1

Ubuntu 附带的工具rename非常适合处理这类事情。您可以嵌入一些 Perl 表达式,如下所示:

rename -n 's/.+/our $i; sprintf("AS%d.txt", 1+$i++)/e' *

这只会向您展示它会做什么。移除它,-n使其成为实弹演习。

这基本上是通过粗略定义一个变量并在我们遇到的每个文件上增加它来实现的。如果您要拥有超过 10 个文件,我建议在 中使用一些零填充sprintf。以下方法适用于999

rename -n 's/.+/our $i; sprintf("AS%03d.txt", 1+$i++)/e' *

...但这很容易扩展。

答案2

我不知道有哪个命令或实用程序可以做到这一点,但使用一个简单的循环就很容易做到:

N=1
for X in AS*RAW*; do
  mv $X AS$N.txt
  N=$(($N+1))
done

答案3

改进@Oli 的回答rename工具版本 1.600经过亚里士多德·帕加尔齐斯实际上有一个内置计数器$N

所以你需要的是,

rename 's/AS.*/AS$N/' *

安装,

  1. brew install rename或者下载脚本
  2. 将其保存到系统路径上的目录(通常/usr/local/bin/brew/usr/bin

答案4

虽然 OP 需要命令行选项,但它也可以作为 Nautilus 中的 GUI 选项使用,而且相当容易。

选择所有需要的文件并按 F2。有一个名为“自动编号”的选项。您可以将其附加到所需的文本中。

相关内容