Мне было интересно, знает ли кто-нибудь, как рекурсивно изменять метки времени папок на основе последних меток времени, найденных для файлов в этой папке.
Так например:
jon@UbuntuPanther:/media/media/MP3s/Foo Fighters/(1997-05-20) The Colour and The Shape$ 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 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 - February Stars.mp3 -rw-r--r-- 1 jon jon 4994903 2010-04-18 00:51 Foo Fighters - Hey, 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) Цвет и форма» будет установлена метка времени 2010-04-18 00:52.
Заранее спасибо!
Мне кажется, вам нужно создать скрипт (оболочку, Perl или что-то еще, но лично я бы использовал Perl) для анализа вывода команды ls -laF и последующего вызова сенсорной команды. В псевдокоде это выглядело бы так:
while (`ls -laF $folder`)
{
$tmp = echo $_ | awk '{print $6 $7}'
if $tmp > $date { $date = $tmp}
}
touch $date $folder
Опять же, это псевдокод. Он предназначен для демонстрации идеи, о которой я думаю, в течение 5 минут. Не ожидайте, что приведенное выше будет похоже на код, который вы в конечном итоге создаете.
Надеюсь, это поможет.
С помощью 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