在特定目录中增量重命名文件?

nux*_*nux 7 command-line scripts gnome-terminal

我有一个包含一堆.txt文件的目录,我需要一个命令来通过一个命令重命名这些文件,因此它们的名称将是:file1.txt , file2.txt, file3.txt , etc .

任何帮助?

sou*_* c. 20

您可以在终端中使用它来根据需要重命名文件,

j=1;for i in *.txt; do mv "$i" file"$j".txt; let j=j+1;done
Run Code Online (Sandbox Code Playgroud)

它会完成这项工作。

解释:

  • 设置一个计数器j,最初将其设置为 1
  • 启动 for 循环并使用 shell glob*.txt获取所有txt文件。
  • 对于每个文件,使用重命名它mv并将计数器增加 1。


jan*_*nos 8

您可以使用 rename 命令,该命令通常包含在默认安装中:

c=0 rename 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *
Run Code Online (Sandbox Code Playgroud)

如果您想先进行测试,请使用 -n 标志:

c=0 rename -n 's/.*/sprintf("file%05d.txt", ++$ENV{c})/e' *
Run Code Online (Sandbox Code Playgroud)

它的工作方式是,对于每个参数,它执行 perls///表达式,并执行从原始字符串到替换字符串的重命名。在我sprintf用来格式化名称的替换字符串中,我使用环境变量c作为 1 的计数器。

在大多数情况下,您可能还需要为每个数字前导“0”,%05d这样做的技巧,其中 5 是位数。