Организация рабочих файлов по неделям
Опубликовано 28.04.2008
Ежедневно в моей рабочей папке появлялось от одного до полутора десятков и более файлов — документов, патчей, скриптов, отчётов и прочих продуктов рабочей деятельности. Однажды настал момент, когда найти нужный файл среди этого бардака стало довольно затруднительно, и чаша моего терпения переполнилась. Файлы нужно каким-нибудь организовать, подумал я. Изобретать систему меток для организации файлов по фэн-шую GTD было лень, поэтому я просто остановился на принципе «одна неделя — одна папка», т.е. все файлы хранятся в папках вида ~/work/week18, к текущей и предыдущей неделе можно обратиться по ссылкам ~/work/current и ~/work/prev.
Для начала я соорудил скрипт для раскидывания файлов по папкам, создающий в текущей директории папки с именами в нужном формате, если их не существует, и перемещающий туда файлы:
#!/usr/bin/perl -w use File::stat; use POSIX qw(strftime); use strict; foreach(`find . -maxdepth 1 -type f |sed 's/\ /\\ /g;'`){ chomp; my $st=stat($_)||die "Could not stat $_: $!\n"; my $week=strftime("%W",localtime($st->mtime)); unless(-d "week$week"){mkdir "week$week";} rename("$_","week$week/$_")||warn "Could not rename $_ to week$week/$_: $!\n"; }
Затем создал скриптик для еженедельного создания новой папки и переименования ссылок current и prev:
#!/bin/sh current_week=week`/bin/date "+%W"` test -L ~/work/prev && rm ~/work/prev mkdir -p ~/work/$current_week pushd ~/work test -L current && /bin/mv current prev ln -s $current_week current popd
Запуск скриптика в первый день каждой недели (нулевой — воскресение, по американским традициям) поместил в свой crontab (если кто еще не в курсе, у каждого пользователя есть свой crontab, аналогичный общесистемному /etc/crontab; редактируется с помощью команды crontab -e, просматривается командой crontab -l; подробнее см. man 1 crontab):
# crontab -l 1 0 * * 1 ~/bin/weekly.sh
Ссылки на ~/work/current и ~/work/prev впоследствии была добавлены в в favorite folders в Gnome, а также во все места, где требуется быстрый доступ к рабочим материалам. Кроме того, в начале каждой новой недели при написании еженедельного отчета стало на порядок проще делать обзор работы за предыдущую неделю (конечно, список рабочих активностей не исчерпывается появившимися файлами; есть же еще и почта, и bug-tracker, и другие средства организации информации)Недостаток у данного скрипта пока один — нужно ежегодно архивировать накопившиеся 52 папки, иначе снова возникнет бардак :) Но и это исправляется при наличии желания и умения.
Интересный скрипт. Приобщим к делу :)
уважуха!
Очень проникся этой идеей, но в моём случае не всё так радужно,
Я использую для хранения всевозможных файлов NAS (http://knol.google.com/k/alex-ander/nas-d-link-dna-313/3rlauyc1j13rx/1#) всё это дело крутиться под линукс, но раздел под хранение файлов в ntfs (такие правила от вендора) и получается что приём с символическими линками не прокатит, я для себя придумал такую схему: в 00.01 каждого ПН крон выполняет скрипт в котором каталог prev переименовывается в weekXX curr в prev и создаётся новый curr. Грабли в том что я не понимаю как вычислить в bash номер недели которая была две недели назад (что бы prev переименовать в weekXX), если не затруднит, помогите разобраться.
Например, так:
Для 25 января выдаёт правильную вторую неделю.
Очень просто и элегантный способ, но дело в том, что в этой встроенной системе используется busybox и его встроенная подпрограмма date не может принять такой ключик, вообще у неё очень ограниченный набор возможностей
Если из используемой версии busybox не выпилили awk, то можно попробовать так:
echo |awk ‘{print
Не получилось по вашему рецепту, пришлось городить… в итоге вот что получилось у меня,
Скажите как человек опытный, человеку не опытному, я так и не понял, что мне выводит программка date, на стене висит календарь, ясно написано 5-ая неделя, в консоли вижу 04 ??? не понял в чём дело, как итог просто вычел из номера недели 1 а не 2 как планировал.
на самом деле сейчас четвертая неделя, так что настенный календарь врёт :) Дело в том, что по европейским стандартам первой неделей года считается та, куда входит как минимум четыре дня (т.е. которая содержит четверг), а по американским — тупо та, которая содержит первый день года, даже если это воскресение. Поэтому нумерация недель 2010 года у нас и у американцев не совпадает.
Подробнее о номерах недель можно узнать тут.
Кстати, наши маркетологи в этом году тоже проштрафились: выпустили календарь с неправильной нумерацией недель, так что это весьма распространённое явление.