我有这些文件,分别是今天和昨天修改的:
a.txt
b.png
我希望它们重命名为:
2020-02-01.a.txt
2020-01-31.b.png
如何通过单个 Bash 命令做到这一点?
答案1
ls | while read FILE; do mv "$FILE" "$(stat "$FILE" -c '%y' | cut -b -10). $FILE"; done
在 Windows 和 Linux Mint 上的 Git Bash 上进行了测试。
答案2
使用基于 Perl 的rename
实用程序:
$ rename -n 'use POSIX qw(strftime); s/^/strftime("%Y-%m-%d.",localtime((stat $_)[9]))/e' *.*
rename(a.txt, 2020-02-01.a.txt)
rename(b.png, 2020-02-01.b.png)
(在某些系统上,rename
可能提供为prename
)。