Назад | Перейти на главную страницу

Как мне рекурсивно изменить временные метки папки?

Мне было интересно, знает ли кто-нибудь, как рекурсивно изменять метки времени папок на основе последних меток времени, найденных для файлов в этой папке.

Так например:

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