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