换句话说,我需要一个脚本来大规模重命名像这样的文件
ABC.jpg
和
XYZ.png
至
1649493072000 ABC.jpg
1649493072182 XYZ.png
我还喜欢在每个以这种方式修改的文件前面附加一个u-。
所以我喜欢转
ABC.jpg
和
XYZ.png
进入
u-1649493072000 ABC.jpg
u-1649493072182 XYZ.png
PS:
对于所有MOD,请注意,我的问题与其他问题不同,因为我问的是文件的UNIX修改时间戳,而不是像2022-04-09这样的ISO日期。
find . -type f -exec
sh -c '
for i do
d=$(dirname "$i")
[ "$d" = / ] && d=
n=${i##*/}
echo mv "$i" "$d/u-$(stat -c %Y "$i") $n"
done' _ {} +
这在当前目录(
.
(中递归操作。它只针对常规文件(而不是目录等(。如果需要,修改-type f
和其他标志。它只是打印mv命令,所以你可以查看它们。移除
echo
以进行真实运行。我们使用
find
列出目标文件,并使用其-exec
标志将此列表传递给shell循环,在该循环中我们可以解析和修改文件名,包括stat
以获得修改时间。我不知道你的用例,但更好的解决方案可能是将:
find . -type f -printf '%p u-%T@n'
的输出保存在一个文件中,以供以后参考(这将在同一行打印文件路径和修改时间(。此外,可能还有一个快照(如果可能的话(。