1

d1 というディレクトリを作成し、5 秒後に d1/d2 を作成すると、d1 のタイムスタンプが d2 のタイムスタンプに更新されます。5 秒後、d1/d2/d3 を作成すると、d2 タイムスタンプのみが d3 に更新されますが、d1 のタイムスタンプは更新されません。

基本的に、私の要件は、親フォルダーだけでなく、ルートから親フォルダーまでのすべてのフォルダーが親フォルダーの時間で更新される必要があることです。

d1 のタイムスタンプを d3 のタイムスタンプで更新する方法はありますか?

どうか明らかにしてください。

4

3 に答える 3

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

現在のディレクトリ内のすべてのディレクトリを検索し、タイムスタンプを現在の時刻に更新します...

于 2010-01-07T15:08:13.050 に答える
2
find . -type d -exec touch  -r d1/d2/d3 -m {} \;
タッチオプション:
-r:参照ファイル。この参照ファイルのタイムスタンプは、タッチに使用されます。
-m:変更時間を変更します。

これにより、pwdの下にあるすべてのディレクトリが検索され、それぞれの変更時刻がd1 / d2/d3ディレクトリの変更時刻に変更されます。ディレクトリd1があるディレクトリにいると想定されます。

于 2010-01-07T15:20:41.887 に答える
1

これにより、追加されたファイルへのパス上にあるディレクトリのみの変更時刻が設定されます。

だからこのツリーで

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

d1とのみd1/d2が影響を受けます。

CHILD="d1/d2/d3"
DIR=`dirname "$CHILD"`
while [[ "$DIR" != "." ]]
do
    touch -m -r "$CHILD" "$DIR"
    DIR=`dirname "$DIR"`
done
于 2010-01-07T15:44:45.317 に答える