我有一组文件,需要根据创建时间重命名,方法是在开头附加两个数字来指示顺序。
比如说,我有以下文件:
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
),然后使用zmv
with重命名它们-Q
,以利用 glob 限定符.Om
,该限定符仅选择常规文件并按mtime
.
去除-n
(试运行切换)如果您对结果感到满意。