[Проект] File Finder

  1. Ще се опитам да напиша да напиша конзолно приложение(може и да е структурирано като модул, още не съм сигурен), което служи за намиране на файл в директориите на файловата система. Като искам това нещо да става по бързо, не както е сега доста бавно. За момента не съм сигурен какво точно ще използвам на готово. Искам да намеря някоя библиотека за достъп до файловата система, но за момента не знам, коя ще бъде(когато си харесам нещо ще кажа).

  2. Тоест искаш да напишеш нещо като find? По какъв начин мислиш да го подобриш? Мислиш ли, че ще можеш да направиш нещо, което да е по - бързо? И по какъв критерии ще се търси?

    Задачата ти трябва да е повече от "намери файл по име в ей тези директории". Това би било твърде просто. Разгледай find и добави допълнителна фукнционалност, ако ти хрумне нещо.

    Докато си на темата, разгледай и locate. Може да ти реши проблема със скороста.

  3. Еми мислех да е нещо като find, но не се бях сетил за всички възможни варянти. Сега идеята е да се реализират колкото се може повече от функциите(дано всички). А мисля, че благодарение на Go ще може да се постигне малко по скостно търсене.

    Малко разширение така на пръв поглед, което може да се забележи:

    • find . -name 'my*' -type f : тази команда може да се разшири, като на name можем да подадем регулярен израз, което ще е доста по функционално.
  4. Опиши точно какви ще са функционалностите на програмата, която искаш да напишеш. Търсене на файл по име (било и то с регулярни изрази) се пише за 20 минути. А пълно реимплементиране на find вероятно ще те озори и съм 99.99% сигурен, че няма да е по-бързо от текущата имплементация.

  5. Искам да подържам тези функционалности:

    • търсене в текущата директория
    • търсене на файл в текуща директория
    • търсене във всички директори
    • търсене във всички директории с изключение на една
    • търсене в посочена директория

    Като ще се стремя да се придържам към синтаксиса на find.

    Имам голямо желание да реализирам и търсенето по размер на файл. Като тук имаме трите варянта:

    • търсене мейду някакъв размер
    • търсене точно с определен размер
    • търсене на не празен файл
  6. Добави още неща. Различни варианти за output, изпълнение на команди или скриптове върху намерените файлове, избор на максимална и минимална дълбочина, филтър по време на създаване, филтър по време на промяна, филтър по собственик на файла, филтър по това дали е линк или не, филтър по тип на файла (mime type).

    Също така, знаеш ли за

    find -regex
    
  7. Мисля да добавя, част от тези работи, който си добавил. Ако направя всичко от изреденото не знам дали ще ми стигне времето( както каза Недялко, голям е шанса да се озоря). Като допълнение имам желанието да реализирам тази функционалност:

    • различни варянти за output
    • изпълнение на команди върху файловете
    • изпълнение на скриптове върху файловете( тук искам да използвам синтаксиса със exec
    • търсене в определена дълбочина

    За филтрите ми стана интересно, но тях бих искал да ги правя само, ако се справя с останалата функционалност

  8. Държа да има филтри, иначе задачата остава доста проста. Със сигурност сложи филтър по тип на файла (което ще отличи твоя find от нормалния) и филтър по време на създаване.

    Недялко е прав, че ако се опиташ да направиш пълния find ще се озориш. Но дори с всичките ми допълнително условия, твоя find е с функционалност 5-10% от истинския.

  9. След всичките добавки ми се вижда, че вече проекта е достатъчно сложен. Продължавай с писането.

    Натиснахме те да му добавиш фийчъри, защото искаме всички да пишат проекти, които са сравнимо сложни. Искамо това за да не се случи някой да получи всички точки за нещо лесни и отнело му 5-6 часа, а друг да получи половина та за много по - интересен проект, в който е влял седмици.

Трябва да сте влезли в системата, за да може да отговаряте на теми.