如何根据mac上的创建时间重命名目录中的文件列表

时间:2016-07-21 08:37:31

标签: bash shell date rename file-rename

我在 Mac bash控制台

我google了很多(甚至在这里堆栈溢出)并尝试了很多脚本,以便通过bash命令重命名目录中的每个文件及其创建时间戳,但没有一个工作,因为datestat命令在mac中是不同的,而不是在linux中。我也没有exif命令。

我想用这样的格式(或者类似的)重命名: YYYYmmDD-HHMM

任何人都可以帮助我吗?非常感谢提前

修改

我尝试了thisthisthis

编辑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

2 个答案:

答案 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