Смени мозги.

Март 26th, 2008 по SadKo Оставить ответ »

Задача: написать shell-скрипт, который выкидывает в файл список файлов в директории, претерпевших изменение после такой-то даты. Я придумал такую конструкцию:

find . -type f -printf «%TY-%Tm-%Td %TH:%TM:%TS %p\n» | awk ‘{ if (sprintf(«%s %s», $1, $2) > «2008-03-24 20:00:00″) { printf(«%s», $3); for (i=4; i<=NF; i++) printf(» %s», $i); printf(«\n»); } }’ >out.txt

Интересно, есть ещё какие-нибудь «более красивые» варианты?

Реклама

2 комментариев

  1. Анонимно:

    Отвечу, заодно и OpenId проверю :)

    Не совсем понятно нафига так извращаться. :) То есть ИМХО сам подход немного хромает. Вместо того чтобы показать все, а потом отобрать нужные — можно просто отобрать нужные, это будет быстрее.

    У того же find есть опция -cmin или -ctime, первая отсчитывает минуты назад, вторая отсчитывает в сутках… (Кто придумал — поубивал бы, помоему что может быть проще того, чтобы просто задать нужное время?)

    Остается пролема в том, как посчитать количество минут прошедших с текущей даты до настоящего момента. :)

    Кароче где-то вот так у меня получилось:
    find -type f -cmin -$(expr \( `date +%s` — `date -d «2008-04-28 00:00:00″ +%s` \) / 60)

    где 2008-04-28 00:00:00 собственно время, модифицированные позже которого файлы надо показывать.

  2. man find

    -mtime n
    File’s data was last modified n*24 hours ago.

    у bsd-find можно было точно задать, вроде

Добавить комментарий

Blue Captcha Image
Refresh

*