The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Как найти самый новый по времени создания файл?"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Shell скрипты)
Изначальное сообщение [ Отслеживать ]

"Как найти самый новый по времени создания файл?"  +/
Сообщение от Chainikk email(ok) on 21-Янв-11, 19:09 
На сервере есть папка, к которую время от времени скачиваются файлы с данными.
Файлы поступают через разные промежутки времени,
иногда с запозданием на 2-3 дня (как сделает оператор), с разными именами.

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

Но вот как же выбрать этот самый свежий файл?

Дорогие специалисты, может кто-нибудь сможет мне помочь?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Как найти самый новый по времени создания файл?"  +/
Сообщение от phpcoder email(ok) on 21-Янв-11, 19:15 
ls -t | head -1
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "Как найти самый новый по времени создания файл?"  +/
Сообщение от Andrey Mitrofanov on 21-Янв-11, 19:19 
> ls -t | head -1

s/-t/-t1/

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

4. "Как найти самый новый по времени создания файл?"  +1 +/
Сообщение от phpcoder email(ok) on 21-Янв-11, 19:22 
>> ls -t | head -1
> s/-t/-t1/

Не обязательно. -1 включается автоматически при передаче данных в pipe, насколько я помню ;-)

(раньше тоже так писал, ага)


Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

2. "самый новый"  +/
Сообщение от Andrey Mitrofanov on 21-Янв-11, 19:16 
find -type f -print0 |xargs -0 stat -c"%Y %n"|sort -k1,1nr|head -1|sed 's_^[^ ]\+ __'
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "самый новый"  +/
Сообщение от Chainikk email(ok) on 21-Янв-11, 19:39 
Спасибо!!!

Буду пробовать все варианты, результат сообщу!!


Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

6. "Как найти самый новый по времени создания файл?"  +/
Сообщение от shadow_alone (ok) on 23-Янв-11, 08:29 
ls -tr|tail -n1
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Как найти самый новый по времени создания файл?"  +1 +/
Сообщение от pavlinux (ok) on 23-Янв-11, 22:40 
> Мой скрипт (sh, или можно csh) запускается каждый час,
> Но вот как же выбрать этот самый свежий файл?

А если их за час поступит 2 и больше?

# Раз в час пускать скрипт,
# находить все файлы, новее чем .timeaccessflag

find /var/lib/ftp/inbound  -anewer /var/lib/ftp/inbound/.timeaccessflag;

# Единственный косяк, если во время работы скрипта придёт другой файл.
# А по закону Мерфи, этот косяк произойдёт с самым нужным сообщением и
# в самое неподходящие время.
# Можно как-то блокировать приём, если по IP, то через iptables,
# если по модему/факсу/мобиле, то поднимать трубку.

# в конце скрипта обновить access time у флага.
touch /var/lib/ftp/inbound/.timeaccessflag;

# и возобновить приём.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

8. "Как найти самый новый по времени создания файл?"  +/
Сообщение от Chainikk email(ok) on 24-Янв-11, 16:29 
Спасибо огромное всем!! Меня очень заинтересовала команда ls!!

Взяла первый вариант - ls -t | head -1.
Но оказалось, что действительно за час может прийти 2-3 файла:-)).
Оператор их обрабатывает в произвольное время суток,
иногда с задержкой 3 дня и выкладывает сразу все.

Сегодня в 11.36 пришло 2 штуки:
f-22-01-2011.JPG
f-21-01-2011.JPG
И время создания у обоих абсолютно одинаковое - 11:36:00 !! Такого облома я не ожидала!!!

Команда ls -t | head -1 без зазрения совести выдает f-21-01-2011.JPG.
Команда find -type f -print0 |xargs -0 stat -c"%Y %n"|sort -k1,1nr|head -1|sed 's_^[^ ]\+ __' - тоже f-21-01-2011.JPG.

Но ведь понятно, что f-22-01-2011.JPG сделан позже, чем f-21-01-2011.JPG.

Тогда я буду скачивать данные за каждый месяц в отдельную папку,
а внутри папки сортировать по имени!!

Вот так:

cd /f/`date -u +%Y`/`date -u +%m`
file_name=`ls | tail -n1`

Только еще придется в начале месяца проверять новые поступления в папке за предыдущий месяц, вдруг оператор выложит файл за 30 число
в следующем месяце...:-(( Но они пообещали больше недели не задерживать.

Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

9. "Как найти самый новый по времени создания файл?"  +/
Сообщение от pavlinux (ok) on 24-Янв-11, 16:32 
> И время создания у обоих абсолютно одинаковое - 11:36:00 !! Такого облома
> я не ожидала!!!

Моя говорила :)

> Только еще придется в начале месяца проверять новые поступления в папке
> за предыдущий месяц, вдруг оператор выложит файл за 30 число
> в следующем месяце...:-(( Но они пообещали больше недели не задерживать.

Зачем проверять по несколько раз, сделай как выше написал - со своим флагом.
Все файлы, у которых время модификации меньше чем у флага, считаются новыми.
То есть ты задавай правила игры, а не они.
Может у них другой косяк будет, например, скоро перевод часов на летнее время
или февраль - короткий месяц, хрен знает как у них там работает рассылка.
Может выставлена на 30 число, вот и придёт тебе за 28 февраля только 30 марта,
что явно больше месяца.

Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

10. "Как найти самый новый по времени создания файл?"  +/
Сообщение от Chainikk email(ok) on 24-Янв-11, 16:42 
Язык shell богат и могуч. Я перехитрю операторов:-)

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

11. "Как найти самый новый по времени создания файл?"  +/
Сообщение от pavlinux (ok) on 24-Янв-11, 16:48 
> Язык shell богат и могуч. Я перехитрю операторов:-)

Кстати, хороший способ - это перемещать все обработанные файлы в архив (другую папку),
тогда любой файл в рабочем каталоге считается не обработанным.
  

Ответить | Правка | ^ к родителю #10 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру