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

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


当前回答

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

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

其他回答

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

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

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

要给一个文件夹中的6000个文件重新编号,您可以使用ACDsee程序的“重命名”选项。

要定义前缀,请使用以下格式:####"*"

然后设置起始号码,按重命名,程序将重命名所有6000个文件的顺序数字。

在OSX上使用Pero的解决方案需要一些修改。我使用:

find . -name '*.jpg' \
| awk 'BEGIN{ a=0 }{ printf "mv \"%s\" %04d.jpg\n", $0, a++ }' \
| bash

注意:反斜杠是用来换行的

2015年7月20日编辑: 合并@ klastopher的反馈来引用mv命令的“%s\”参数,以支持带空格的文件名。

对我来说,这些答案的组合非常完美:

ls -v | gawk 'BEGIN{ a=1 }{ printf "mv %s %04d.jpg\n", $0, a++ }' | bash

ls -v帮助以正确的1 10 9:1 9 10的顺序排序,避免文件名扩展的问题jpg jpg jpeg gawk 'BEGIN{a=1}{printf "mv %s %04d.jpg\n", $0, a++}'以4个字符和前导零重新编号。通过避免mv,我不会意外地试图覆盖已经存在的任何东西,因为意外地有相同的数字。 bash执行

注意@xhienne所说的,将未知内容输送到bash是一种安全风险。但这不是我的情况,因为我使用我的扫描照片。

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

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