Создание каталога недавно созданных файлов

В системе я имею, файлы загружаются через серию различных механизмов в один центральный "входящий" каталог. Один раз в день те файлы обрабатываются, и они отъезжаются туда, где они должны быть (что логика не релевантна здесь). Они заканчивают в подкаталоге /files/. Я предполагаю, что простое (хотя неточный в моем конкретном случае) должно было бы сказать, что файлы, которые запускаются с "a", перемещены в /files/a/afile.

Таким образом, у меня есть загрузка подкаталогов в /files/. Это является большим, и это работает на меня. Однако клиент только что сказал мне, что было бы хорошо, если мог бы быть "недавно добавленный" каталог, где файлы с прошлой недели доступны.

Моя первая мысль состояла в том, чтобы создать названный каталог /recent-files/ и расширьте сценарий обработки файла, чтобы сделать следующее после того, как он переместит файлы из /incoming/:

  1. Удалите все файлы из /recent-files/
  2. Сканирование /files/ для любого файла (не каталог) созданный в течение недели
  3. Создайте символьную ссылку для каждого к ее реальному пути и всуньте ее /recent-files/

Кажется, что это работало бы, но мой удар все еще довольно слаб когда дело доходит до арифметических и дат создания файла. Может кто-либо предоставлять мне руку, обрабатывающую a find ... -exec ... оператор, который приближает части два и три?

Конечно, если существует другой способ создать командную строку и NFS видимый "поисковый каталог", сообщенный мне.

1
задан 23 October 2010 в 02:41

2 ответа

find -L files -type f -newerct '-7 days' -exec ln -s -t recent-files {} +

(Конечно, измените «files» и «недавние файлы» соответствующим образом.)

«c», используемый в -newer, не время создания, это поле «change» как показано stat (команда, например, man 1 stat). В настоящее время файловые системы * nix редко хранят время создания, но время изменения ('c'), изменения ('m') и доступа ('a') доступно. Если ваша файловая система хранит время создания, вы можете использовать «B» («время рождения») - вы сразу же получите сообщение об ошибке, если оно не поддерживается.

Вы можете увидеть точное сокращение с датой:

$ date -d '-7 days'
Sat Oct 16 02:46:27 UTC 2010
$ date  # this was executed one second later
Sat Oct 23 02:46:28 UTC 2010
0
ответ дан 23 October 2010 в 02:41

Если вы используете Zeitgeist и FUSE возможны для вашего сценария, Zeitgeist Filesystem позволяет сортировать файлы и другие события Zeitgeist по времени в файловой системе пользовательского пространства.

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

0
ответ дан 23 October 2010 в 02:41

Другие вопросы по тегам:

Похожие вопросы: