我有一个包含一堆.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