如何根据 mac 上的创建时间重命名目录中的文件列表
How to rename a list of files in directory based on creation time on mac
我在 Mac bash 控制台上。
我用谷歌搜索了很多(甚至在堆栈溢出中)并尝试了很多脚本,以便 通过 [=51] 重命名目录中的每个文件及其创建时间戳 =] 命令,但 none 有效,因为 date
和 stat
命令在 mac 中不同于 linux。我也没有 exif
命令。
我想用这样的格式(或类似的)重命名:YYYYmmDD-HHMM
有人可以帮助我吗?非常感谢
编辑
编辑 2
我想用这样的格式(或类似的格式)重命名:YYYYmmDD-HHMM.jpg(jpg 是文件扩展名的一个例子,我会喜欢不丢失文件扩展名)
编辑 3
目前此命令部分有效(始终应用 jpg 扩展名)
for f in `ls`; do mv "$f" "$(stat -t %Y%m%d-%H%M $f | awk -F"\"" '{print }').jpg"; done
mv fileName `stat -f %SB -t %Y%m%d-%H%M fileName`
编辑
这里是最终解决方案,在整个文件列表中循环
for f in `ls`;
do mv "$f" "`stat -f %SB -t %Y%m%d-%H%M $f`.`echo $f | cut -d '.' -f 2`";
done
至 prefix/prepend 文件夹中具有 创建日期 的每个文件,格式为 %Y%m%d-%H%M
(例如 20200722-1352
),运行 以下片段:
for filename in *; do
mv "$filename" "$(stat -f "%SB %N" -t "%Y%m%d-%H%M" "$filename")"
done
自定义格式/了解此命令的作用:
在这种情况下,-f
参数将用作输出文件名的格式,其中 %SB %N
表示:
- 使用
S
字符串输出
- 打印
B
出生日期(创建时间)
- 打印一个space
- 打印原文件
N
是.
-t
参数扩展了日期格式本身。随意修改那些以满足您的需要。有关所有可能性,请参阅 manual for stat
中的 FORMATS 部分。
如果你想去掉原来的文件名只保留日期和扩展名,我们可以调整格式参数不包括文件名,并手动附加提取的扩展名${filename##*.}
:
for filename in *; do
mv "$filename" "$(stat -f "%SB" -t "%Y%m%d-%H%M" "${filename}").${filename##*.}"
done
我在 Mac bash 控制台上。
我用谷歌搜索了很多(甚至在堆栈溢出中)并尝试了很多脚本,以便 通过 [=51] 重命名目录中的每个文件及其创建时间戳 =] 命令,但 none 有效,因为 date
和 stat
命令在 mac 中不同于 linux。我也没有 exif
命令。
我想用这样的格式(或类似的)重命名:YYYYmmDD-HHMM
有人可以帮助我吗?非常感谢
编辑
编辑 2
我想用这样的格式(或类似的格式)重命名:YYYYmmDD-HHMM.jpg(jpg 是文件扩展名的一个例子,我会喜欢不丢失文件扩展名)
编辑 3
目前此命令部分有效(始终应用 jpg 扩展名)
for f in `ls`; do mv "$f" "$(stat -t %Y%m%d-%H%M $f | awk -F"\"" '{print }').jpg"; done
mv fileName `stat -f %SB -t %Y%m%d-%H%M fileName`
编辑
这里是最终解决方案,在整个文件列表中循环
for f in `ls`;
do mv "$f" "`stat -f %SB -t %Y%m%d-%H%M $f`.`echo $f | cut -d '.' -f 2`";
done
至 prefix/prepend 文件夹中具有 创建日期 的每个文件,格式为 %Y%m%d-%H%M
(例如 20200722-1352
),运行 以下片段:
for filename in *; do
mv "$filename" "$(stat -f "%SB %N" -t "%Y%m%d-%H%M" "$filename")"
done
自定义格式/了解此命令的作用:
在这种情况下,-f
参数将用作输出文件名的格式,其中 %SB %N
表示:
- 使用
S
字符串输出 - 打印
B
出生日期(创建时间) - 打印一个space
- 打印原文件
N
是.
-t
参数扩展了日期格式本身。随意修改那些以满足您的需要。有关所有可能性,请参阅 manual for stat
中的 FORMATS 部分。
如果你想去掉原来的文件名只保留日期和扩展名,我们可以调整格式参数不包括文件名,并手动附加提取的扩展名${filename##*.}
:
for filename in *; do
mv "$filename" "$(stat -f "%SB" -t "%Y%m%d-%H%M" "${filename}").${filename##*.}"
done