Задача: написать 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
Интересно, есть ещё какие-нибудь «более красивые» варианты?
Отвечу, заодно и 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 собственно время, модифицированные позже которого файлы надо показывать.
man find
-mtime n
File’s data was last modified n*24 hours ago.
у bsd-find можно было точно задать, вроде