我在 Mac bash控制台。
我google了很多(甚至在这里堆栈溢出)并尝试了很多脚本,以便通过bash命令重命名目录中的每个文件及其创建时间戳,但没有一个工作,因为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 $8}').jpg"; done
答案 0 :(得分:0)
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
答案 1 :(得分:0)
要使用格式为%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
的出生日期(创建时间)
N
,同样。 -t
参数扩展日期格式本身。随意修改它们以适合您的需求。有关所有可能性,请参见manual for stat
中的“格式”部分。
如果您希望删除原始文件名而只保留日期和扩展名,我们可以调整format参数不包括文件名,然后手动附加提取的扩展名${filename##*.}
:
for filename in *; do
mv "$filename" "$(stat -f "%SB" -t "%Y%m%d-%H%M" "${filename}").${filename##*.}"
done