我想将目录中的文件重命名为顺序数字。根据文件的创建日期。

例如,sadf.jpg到0001.jpg, wrjr3.jpg到0002.jpg等等,前导零的数量取决于文件的总数(如果不需要,不需要额外的零)。


当前回答

下面是另一个使用"rename"命令的解决方案:

find -name 'access.log.*.gz' | sort -Vr | rename 's/(\d+)/$1+1/ge'

其他回答

现在有一个选项后,你选择多个文件重命名(我已经看到在thunar文件管理器)。

选择多个文件 检查选项 选择重命名

在该特定目录下的所有文件都会出现提示符 只要在分类部分检查一下就可以了

find .  | grep 'avi' | nl -nrz -w3 -v1 | while read n f; do mv "$f" "$n.avi"; done

找到。将显示文件夹和子文件夹中的所有文件。

Grep 'avi'将过滤所有avi扩展名的文件。

Nl -nrz -w3 -v1将显示从001 002开始的序列号,后面跟着文件名。

当读n f;做mv "$f" "$ n.v v ";Done会将文件名更改为序列号。

再次使用Pero的解决方案,只做了很少的修改,因为find将遍历目录树中的项目存储在目录条目中的顺序。在同一台机器上,这将(大部分)在不同的运行中保持一致,如果没有删除,则基本上是“文件/目录创建顺序”。

然而,在某些情况下,您需要获得某种逻辑顺序,例如按名称,这在本例中使用。

find -name '*.jpg' | sort -n | # find jpegs
gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | # build mv command
bash # run that command 

这个脚本将在Mac OS bash上按创建日期对文件进行排序。我用它来重命名视频。只需更改扩展名和名称的第一部分。

ls -trU *.mp4| awk 'BEGIN{ a=0 }{ printf "mv %s lecture_%03d.mp4\n", $0, a++ }' | bash

用“重命名”命令

rename -N 0001 -X 's/.*/$N/' *.jpg

or

rename -N 0001 's/.*/$N.jpg/' *.jpg