質問: フォルダーのタイムスタンプを再帰的に最新のファイルに変更するにはどうすればよいですか? 誰かが、そのフォルダー内のファイルで見つかった最新のタイムスタンプに基づいてフォルダーのタイムスタンプを再帰的に変更する方法を知っているかどうか疑問に思っていました。だから例えば: jon @ ubuntupanther:/ media/media/mp3s/foo fighters /(1997-05-20)色と形$ ls -alf total 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ジョンジョン1694044 2010-04-18 00:51 foo fighters-doll.mp3 -rw-r--r-- 1ジョンジョン3151170 2010-04-18 00:51 fooファイターズ-十分なスペース.mp3 -rw-r--r-- 1ジョンジョン5004289 2010-04-18 00:52フーファイターズ-everlong.mp3 -rw-r--r -1ジョンジョン5803125 2010-04-18 00:51フーファイターズ-2月のスター.mp3 -rw-r--r-- 1ジョンジョン4994903 2010-04-18 00:51フーファイターズ-ねえ、ジョニーパーク!.mp3 -rw-r--r-- 1 jon jon 4649556 2010-04-18 00:52 foo fighters-monkey wrench.mp3 -rw-r- -r-- 1ジョンジョン5216923 2010-04-18 00:51 foo fighters-my hero.mp3 -rw-r--r-- 1ジョンジョン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-walk after you .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に設定されます。
回答: 私はこの仕事をまとめました:これは、/tmp/test/内のすべてのディレクトリを、各ディレクトリ内の最新ファイルのタイムスタンプに変更するスクリプトです。#!/bin/bash if [ -z "$1" ] ; then echo 'error: parameter missing. specify the folder!' exit fi #mode=tail # change to newest file mode=head # change to oldest file for d in "$1"/*/; do echo "running on $d" find "$d" -type d -execdir \ echo touch --reference="$(find "$d" -mindepth 1 -maxdepth 1 -printf '%t+=%p\n' \ | sort | "$mode" -n 1 | cut -d= -f2-)" "$d" \; # remove echo to really run it done 次のように/ tmpにいくつかのテストファイルを追加できます。mkdir /tmp/test cd /tmp/test mkdir d1 mkdir d2 touch d1/text1.txt sleep 1 touch d1/movie1.mov touch d2/movie2.mov sleep 1 touch d2/text2.txt touch notthis.file