我有几个.JPG文件,我希望他们是.jpg文件,但每个build议重命名脚本使用“mv”和手册页(在山狮子)MV说,它做了副本和删除,这就解释了为什么当我运行脚本“创build/修改/等”date全部更改为当前date。 我不希望这样的事情发生。 我能做什么?
所以,我想弄乱这些。 我甚至发现了一个很好的旧文件,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
现在,他们在newdir并从当前的目录中删除。 但我们希望他们回来 – 不能使用mv。
$ for i in renamed/* ; do cp -p $i . ; rm $i ; done $ rm -rf renamed/
Tadaa
$ 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
使用touch -r将一个文件的时间戳设置为另一个文件。
cp oldfile newfile touch -r oldfile newfile
那个touch说:“设置newfile的时间戳到oldfile的时间戳。
这里有一篇关于touch的博文,以及如何使用它 。
尽pipe如此,所有的复制+触摸都不是必须的。 你说手册说“MV说它做了一个复制和删除”,但这不是准确的。 我想你可能会误解它。 您应该可以使用mv来重命名文件。 您可能会遇到一个问题,因为在HFS +,Mac文件系统中,文件名是不区分大小写的,所以“foo.jpg”和“FOO.JPG”是一样的。