在 Mac 上重命名文件(扩展名)而不更改创建日期?

在 Mac 上重命名文件(扩展名)而不更改创建日期?

我有几个 .JPG 文件,我想将它们转换为 .jpg 文件,但每个建议的重命名脚本都使用“mv”,而 mv 的手册页(在 Mountain Lion 上)说它会进行复制和删除,这解释了为什么当我运行脚本时,“创建/修改/等”日期都更改为当前日期。我不想发生这种情况。我该怎么办?

答案1

所以,我想弄弄这些。我甚至找到了一个很好的旧文件,它是在 2006 年修改的。

$ stat -f "%m%t%Sm %N" *
1347657595  Sep 14 23:19:55 2012 1.JPG
1347715529  Sep 15 15:25:29 2012 2.JPG
1156277764  Aug 22 22:16:04 2006 3.JPG
1347657554  Sep 14 23:19:14 2012 4.JPG
1347657554  Sep 14 23:19:14 2012 5.JPG
1347741772  Sep 15 22:42:52 2012 6.JPG

为他们创建一个新目录

$ mkdir renamed

循环遍历它们

$ for i in *.JPG ; do cp -p $i renamed/`echo $i|sed 's/JPG$/jpg/g'` ; rm $i ; done

现在,它们位于新目录中,并从当前目录中删除。但我们想将它们恢复 - 但不能使用 mv。

$ for i in renamed/* ; do cp -p $i . ; rm $i ; done
$ rm -rf renamed/

塔达

$ stat -f "%m%t%Sm %N" *
1347657595  Sep 14 23:19:55 2012 1.jpg
1347715529  Sep 15 15:25:29 2012 2.jpg
1156277764  Aug 22 22:16:04 2006 3.jpg
1347657554  Sep 14 23:19:14 2012 4.jpg
1347657554  Sep 14 23:19:14 2012 5.jpg
1347741772  Sep 15 22:42:52 2012 6.jpg

答案2

用于touch -r将一个文件的时间戳设置为另一个文件。

cp oldfile newfile
touch -r oldfile newfile

touch表示“将 的时间戳设置newfile为 的时间戳oldfile”。

以下是一篇博客文章详细介绍了touch如何使用它

不过,所有这些 copy + touch 都不是必需的。你说手册上说“mv 说它执行复制和删除”,但这并不准确。我想你可能读错了。你应该能够使用它来mv重命名文件。你可能遇到了问题,因为在 HFS+(Mac 文件系统)上,文件名不区分大小写,因此“foo.jpg”与“FOO.JPG”相同。

相关内容