在特定目录中逐步重命名文件?

在特定目录中逐步重命名文件?

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

有什么帮助吗?

答案1

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

j=1;for i in *.txt; do mv "$i" file"$j".txt; let j=j+1;done

它将完成这项工作。

解释:

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

答案2

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

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

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

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

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

在大多数情况下,您可能还需要为每个数字加上前导“0”,%05d这样就可以了,其中 5 是数字。

答案3

以下命令也将逐步重命名文件:

cd (directory containing files )

然后运行此脚本:

count=1
for i in *; do
    mv "${i}" file${count}.`echo "${i}" | awk -F. '{print $2}'`
    ((++count))

done 

相关内容