Shell

如何將文件夾時間戳遞歸更改為最新文件?

  • March 14, 2022

我想知道是否有人知道如何根據在該文件夾中找到的文件的最新時間戳遞歸地更改文件夾的時間戳。

例如:

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 喬恩喬恩 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 - 足夠的空間.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 - February Stars.mp3
-rw-r--r-- 1 jon jon 4994903 2010-04-18 00:51 Foo Fighters - 嘿,約翰尼公園!.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 - 我可憐的大腦.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 - 追隨你.mp3
-rw-r--r-- 1 jon jon 3033660 2010-04-18 00:52 Foo Fighters - Wind Up.mp3

文件夾“(1997-05-20) The Color and The Shape”的時間戳將設置為 2010-04-18 00:52。

您可以touch -r使用另一個文件的時間戳而不是目前時間(或touch --reference=FILE

這裡有兩個解決方案。在每個解決方案中,第一個命令將目錄的修改時間更改為緊接其下的最新文件的修改時間,第二個命令遞歸查看整個目錄樹。cd '.../(1997-05-20) The Colour and The Shape'在執行任何命令之前切換到目錄 ( )。

在 zsh 中(刪除D要忽略的點文件):

touch -r *(Dom[1]) .
touch -r **/*(Dom[1]) .

在 Linux 上(或更一般地使用 GNU find):

touch -r "$(find -mindepth 1 -maxdepth 1 -printf '%T+=%p\n' |
           sort |tail -n 1 | cut -d= -f2-)" .
touch -r "$(find -mindepth 1 -printf '%T+=%p\n' |
           sort |tail -n 1 | cut -d= -f2-)" .

但是請注意,這些假設文件名中沒有換行符。

引用自:https://unix.stackexchange.com/questions/1524