根据修改时间对文件进行编号

根据修改时间对文件进行编号

我有一组文件,需要根据创建时间重命名,方法是在开头附加两个数字来指示顺序。

比如说,我有以下文件:

Filename         Creation time
api.c            00:15
helloworld.h     00:05
ubuntu.iso       00:10

重命名后,文件名应采用以下形式:

01_helloworld.h
02_ubuntu.iso
03_api.c

我该怎么做呢?

答案1

这也bash假设管道进入较少。

ls -tr打印文件最旧的修改首先,其他人对创作时间进行了评论。

a=0, ls -tr | while read line; do printf "%s \'%s\' \'%03d_%s\'\n" mv "$line" $((a=a + 1)) "$line"; done|less

答案2

zsh

( autoload zmv
set -- *(.Om)
pad=${#${#}}
zmv -n -Q '*(.Om)' '${(l:${pad}::0:)$((++i))}_$f' )

这首先获取文件的数量(以便能够通过标志计算零填充的长度l),然后使用zmvwith重命名它们-Q,以利用 glob 限定符.Om,该限定符仅选择常规文件并按mtime.
去除-n试运行切换)如果您对结果感到满意。

相关内容