如何递归更改文件夹时间戳?

如何递归更改文件夹时间戳?

我想知道是否有人知道如何根据该文件夹中文件的最新时间戳递归更改文件夹的时间戳。

例如:

jon@UbuntuPanther:/media/media/MP3s/Foo Fighters/(1997-05-20) 颜色和形状$ ls -alF
总计 55220
drwxr-xr-x 2 jon jon 4096 2010-08-30 12:34 ./
drwxr-xr-x 11 jon jon 4096 2010-08-30 12:34 ../
-rw-r--r-- 1 jon jon 1694044 2010-04-18 00:51 Foo Fighters - Doll.mp3
-rw-r--r-- 1 jon jon 3151170 2010-04-18 00:51 Foo Fighters - Enough Space.mp3
-rw-r--r-- 1 jon jon 5004289 2010-04-18 00:52 Foo Fighters - Everlong.mp3
-rw-r--r-- 1 jon jon 5803125 2010-04-18 00:51 Foo Fighters - 二月之星.mp3
-rw-r--r-- 1 jon jon 4994903 2010-04-18 00:51 Foo Fighters - 嘿,Johnny Park!.mp3
-rw-r--r-- 1 jon jon 4649556 2010-04-18 00:52 Foo Fighters - Monkey Wrench.mp3
-rw-r--r-- 1 jon jon 5216923 2010-04-18 00:51 Foo Fighters - My Hero.mp3
-rw-r--r-- 1 jon jon 4294291 2010-04-18 00:52 Foo Fighters - My Poor Brain.mp3
-rw-r--r-- 1 jon jon 6778011 2010-04-18 00:52 Foo Fighters - New Way Home.mp3
-rw-r--r-- 1 jon jon 2956287 2010-04-18 00:51 Foo Fighters - See You.mp3
-rw-r--r-- 1 jon jon 2730072 2010-04-18 00:51 Foo Fighters - Up in Arms.mp3
-rw-r--r-- 1 jon jon 6086821 2010-04-18 00:51 Foo Fighters - Walking After You.mp3
-rw-r--r-- 1 jon jon 3033660 2010-04-18 00:52 Foo Fighters - Wind Up.mp3

文件夹“(1997-05-20) The Colour and The Shape”的时间戳将设置为 2010-04-18 00:52。

提前致谢!

答案1

使用TOUCH您可以更改文件夹或文件的时间戳:

touch -t 1004180052 folder #(YYMMDDhhmm)

您可能想知道的选项:

-r, --reference=FILE
    use this file's times instead of current time 
-t STAMP
    use [[CC]YY]MMDDhhmm[.ss] instead of current time 

使用 -r 您可以指定一个文件来获取时间戳,或者您可以使用 -t 自己设置它。

如果您想对目录中的所有文件运行它并使用最后更新的文件更新您的文件夹ls将是一个更好的选择:

touch -r "`ls -1tA /path/to/folder | head -n 1`" /path/to/folder

答案2

在我看来,您需要编写一个脚本(shell 或 Perl 或其他,但我个人会使用 Perl)来解析 ls -laF 命令的输出,然后调用 touch 命令。在伪代码中,它看起来像这样:

while (`ls -laF $folder`)
{
  $tmp = echo $_ | awk '{print $6 $7}'
  if $tmp > $date { $date = $tmp}
}
touch $date $folder

再次强调,这是伪代码。它旨在在 5 分钟内演示我的想法。不要指望上面的内容与您最终编写的代码相似。

希望有所帮助。

相关内容