2010-01-07 28 views
1

當我創建一個目錄說d1和5秒後d1/d2,然後d1時間戳更新到d2的時間戳。 5秒後,當我創建d1/d2/d3時,只有d2時間戳記更新爲d3,但不是d1。unix中的遞歸時間戳更新

基本上,我的要求是,不僅父文件夾,而且所有從根文件夾到父文件夾的文件夾必須更新與父文件夾的時間。

有什麼辦法可以更新d1的時間戳和d3的時間戳嗎?

請說明。

回答

3
find . -type d -exec touch -m -r d3 {}\; 

會在當前目錄下的所有目錄和更新的時間戳到當前的時間...

+0

他希望將所有目錄的時間戳記更改爲d3的時間戳記。您的解決方案會將其更改爲當前時間。 – gameover 2010-01-07 15:23:02

+0

好點。現在修復... – 2010-01-07 15:28:45

2
find . -type d -exec touch -r d1/d2/d3 -m {} \; 
 
touch options: 
-r :reference file. The timestamp of this ref file will be used for touching. 
-m :change the modification time. 

這會發現所有PWD下的目錄,並將修改的修改時間每個修改時間爲d1/d2/d3目錄。假定您位於具有目錄d1的目錄中。

1

這會將路徑爲的目錄的修改時間設置爲添加的文件。

所以在這棵樹

d1 
d1/d2 
d1/d2/d3 <-- this is the one we are adding 
d1/d2a 
d1/d2a/d3a 

只有d1d1/d2將受到影響。

CHILD="d1/d2/d3" 
DIR=`dirname "$CHILD"` 
while [[ "$DIR" != "." ]] 
do 
    touch -m -r "$CHILD" "$DIR" 
    DIR=`dirname "$DIR"` 
done