abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 18:11 | Komunita

    Od 13. do 15. října proběhne v Praze OpenSSL Conference 2026. Na YouTube lze zhlédnout videozáznamy přednášek z loňského roku.

    Ladislav Hagara | Komentářů: 0
    dnes 17:22 | IT novinky

    Eben Upton oznámil další zdražení jednodeskových počítačů Raspberry Pi. Tentokrát 2 GB varianty o 12,50 dolarů. Nově 2 GB Raspberry Pi 4 stojí 67,50 dolarů a 2 GB Raspberry Pi 5 stojí 77,50 dolarů.

    Ladislav Hagara | Komentářů: 1
    dnes 13:00 | Nová verze

    OpenMandriva ROME, tj. průběžně aktualizovaná (rolling) edice linuxové distribuce OpenMandriva, byla vydána ve verzi 26.09. Vedle Flatpaku také s podporou Snapu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:33 | Zajímavý software

    Edison Design Group po více než 30 letech zveřejnil zdrojový kód svého EDG C/C++ front-endu. Ten proslul širokou podporou standardů C++ a kompatibilitou s dialekty kompilátorů od Microsoftu, GNU, Clangu, Sunu a dokonce i s prehistorickým cfrontem. EDG byl použit například v kompilátoru Intel C++ Classic, kompilátoru NVCC od firmy NVIDIA pro platformu CUDA nebo v našeptávači kódu IntelliSense v produktech společnosti Microsoft. Projekt nyní spravuje organizace The C++ Alliance a kód je dostupný pod licencí Apache 2.0, doplněnou o výjimky projektu LLVM.

    AfD 💙 | Komentářů: 0
    dnes 04:11 | Zajímavý projekt

    Pocket Tank je malé kapesní virtuální akvárium postavené na vývojové desce ESP32-S3-Touch-AMOLED-1.8. Na dvoujádrovém mikrokontroléru ESP32-S3 s 8 MB PSRAM a 16 MB flash paměti běží jak simulace akvária, tak i malý jazykový model určující chování rybiček. Lokální model o velikosti 7,56 MB se 14 miliony parametrů vznikl destilací modelu Gemma 4 26B, tedy učitele s 26 miliardami parametrů. Kromě firmwaru pro skutečný modul s AMOLED

    … více »
    AfD 💙 | Komentářů: 3
    dnes 03:55 | Zajímavý software

    Open-source nástroj Jevstiller vytváří (destiluje) malý lokální model, který se průběžně učí z odpovědí komerční služby Jev. Běžné dotazy vyřizuje přímo na vlastním hardware, čímž může řádově zkrátit čas odezvy a snížit provozní náklady díky menšímu využívání zpoplatněného API. Nejisté požadavky Jevstiller posílá do Jevu, rovněž průběžně kontroluje náhodná dvě procenta dotazů Jevem. Pokud se lokální model začne s Jevem rozcházet,

    … více »
    AfD 💙 | Komentářů: 2
    včera 12:00 | Pozvánky

    Konference LinuxDays 2026 proběhne již tento víkend 3. a 4. října v Praze v areálu ČVUT v Dejvicích na FIT. Konference LinuxDays 2026 znamená desítky přednášek a workshopů, zástup zajímavých osobností, místo pro setkání, spoustu nových nápadů a informací a stánky řady různých projektů: Fedora, openSUSE, vpsFree.cz, Mozilla, MacGyver - bastlíři SH, OpenAlt a mnoho dalších. Vstup je volný.

    Ladislav Hagara | Komentářů: 4
    včera 04:33 | IT novinky

    Microsoft oznámil, že WSL kontejnery (WSLC) aneb linuxové kontejnery ve Windows Subsystem for Linux (WSL) jsou již obecně dostupné. Současně popsal jejich architekturu.

    Ladislav Hagara | Komentářů: 0
    29.9. 23:22 | Komunita

    openSUSE Leap 16.1 vstoupil do RC fáze. Nově lze instalovat jako standardní systém (Standard) nebo jako neměnný systém s atomickými aktualizacemi (Immutable). Samostatná neměnná distribuce openSUSE Leap Micro končí.

    Ladislav Hagara | Komentářů: 0
    29.9. 22:22 | Nová verze

    Byl vydán Mozilla Firefox 157.0. S nejvýraznější vizuální proměnou za poslední roky. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 157 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 12
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2771 hlasů
     Komentářů: 31, poslední 13.8. 00:27
    Rozcestník

    Hledač v souborech

    11.3.2011 00:00 | Přečteno: 1650× | Jiné | poslední úprava: 11.3.2011 00:34

    Protože můj skriptík v bashi na hledání v obsahu souborů byl nechutně pomalý a už mě to štvalo, tak jsem upatlal narychlo jednu utilitku v C++. Je to trošku prasácky, ale pro mé účely to stačí. Ke stažení v příloze prvního komentáře, jak skriptík, tak program.

    Pokud vynalézám kolo, tak sry, já na to žádnou utilitku ve svém systému neznám.

    Rychlost hledání je na mém systému 0.6s vs. 13s v celém stromu téhle věci.

    Ještě jedna věc, kompilujte buď s parametrem -std=c++0x, nebo vyhoďte ten static_assert (ale ujistěte se, že je podmínka splněna, jinak to bude chybovat u velkých souborů, např, na x86-32 při definování _FILE_OFFSET_BITS=64)

           

    Hodnocení: 100 %

            špatné • dobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Jardík avatar 11.3.2011 00:00 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Přílohy:
    Tady
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 00:05 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    BTW pod licencí Do What The Fuck You Want To Public License, version 2
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 00:14 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Koukám, že jsem v tom C++ souboru zapomněl pár include souborů, co byly z pokusů (nejdříve tam byl read() ale protože to bylo moc na logiku, tam jsem tam prsknul nakonec mmap()).
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 12:47 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Příloha:
    Aktualizovaný zdroják, několikanásobné zrychlení.
    Věřím v jednoho Boha.
    11.3.2011 00:10 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Hledá to v Jiných Objektech?
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    Jardík avatar 11.3.2011 00:11 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Co? Hledá to jen v souborech (i binárních) text, co mu předáš jako argument.
    Věřím v jednoho Boha.
    11.3.2011 22:25 moira | skóre: 30 | blog: nesmysly
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Tohle souvisí s těmi Objekty. Aspoň doufám. Člověk si nemůže být jist, až po důkladném zkoumaní, které nechci absolvovat.
    Překladač ti nikdy neřekne: "budeme kamarádi"
    11.3.2011 08:59 Pindal
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Hehe. To mi připomíná, že mistr Hejl asi pořád hledá programátora a Jardík je bez práce, ne? Z jejich spolupráce by jistě vzešlo veledílo. Sice nedodělané, ale nejmíň 64-bitové! ;-)
    11.3.2011 12:29 manasekp | skóre: 29 | blog: manasekp | Brno
    Rozbalit Rozbalit vše Re: Hledač v souborech
    hejlovi se nahodou celkem dari, posledne sem se dival na jeho web a uz mel hotove logo Novy Hledac vytvorene ve wordu :-D
    BIOKOMP | Cas od casu se pokousim nekoho srazit k zemi abych se tam nevalel sam.
    11.3.2011 00:48 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Hledač v souborech
    grep -r, alebo find a grep by postacil. alebo som to vobec nepochopil.
    David Watzke avatar 11.3.2011 01:30 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Měl by postačit grep s přepínači -r a -l.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    David Watzke avatar 11.3.2011 01:32 David Watzke | skóre: 74 | blog: Blog... | Praha
    Rozbalit Rozbalit vše Re: Hledač v souborech
    A ještě asi -a pro hledání v binárních souborech.
    “Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
    11.3.2011 08:23 CET
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Pochopil jsi to zrejme naprosto spravne, jenom proste Jardik nezna linuxove utility, takze se snazil to v shellu napsat tak, jak by to napsal v C. No a to je samozrejme pomaly, protoze shell je interpretovany, takze kazdy prikaz se znovu a znovu interpretuje.

    Samozrejme by ten shell skript mel byt pouze jeden grep prikaz grep -raliF 'hledany-text' directory, pripadne pokud Jardik zvlada regularni vyrazy, tak grep -raliE 'extended-regexp' directory.

    Docela by me zajimal rozdil oproti tomu tvymu CPP. Udelej benchmark. Zkus to s tim -raliF to hleda plain-text, zadny regexp (regexp bude zrejme o trosku pomalejsi).
    Jardík avatar 11.3.2011 11:56 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    time grep -raliF Sys_FullPath .
    ./branches/next_ghost/unix/system.cpp
    ./branches/next_ghost/unix/.svn/text-base/init.cpp.svn-base
    ./branches/next_ghost/unix/.svn/text-base/system.cpp.svn-base
    ./branches/next_ghost/unix/init.cpp
    ./branches/next_ghost/libs/system.h
    ./branches/next_ghost/libs/memman.cpp
    ./branches/next_ghost/libs/.svn/text-base/memman.cpp.svn-base
    ./branches/next_ghost/libs/.svn/text-base/system.h.svn-base
    ./branches/next_ghost/game/realgame.cpp
    ./branches/next_ghost/game/music.cpp
    ./branches/next_ghost/game/globmap.cpp
    ./branches/next_ghost/game/macros.cpp
    ./branches/next_ghost/game/gamesave.cpp
    ./branches/next_ghost/game/.svn/text-base/gamesave.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/skeldal.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/globmap.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/inv.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/dialogs.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/music.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/realgame.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/menu.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/book.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/macros.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/interfac.cpp.svn-base
    ./branches/next_ghost/game/interfac.cpp
    ./branches/next_ghost/game/dialogs.cpp
    ./branches/next_ghost/game/menu.cpp
    ./branches/next_ghost/game/inv.cpp
    ./branches/next_ghost/game/book.cpp
    ./branches/next_ghost/game/skeldal.cpp
    
    real    0m4.747s
    user    0m4.616s
    sys     0m0.127s
    [jardik@Jardik-ArchPC skeldal]$ time /home/jardik/Projects/FindInFiles/findinfiles Sys_FullPath
    ./branches/next_ghost/unix/system.cpp
    ./branches/next_ghost/unix/.svn/text-base/init.cpp.svn-base
    ./branches/next_ghost/unix/.svn/text-base/system.cpp.svn-base
    ./branches/next_ghost/unix/init.cpp
    ./branches/next_ghost/libs/system.h
    ./branches/next_ghost/libs/memman.cpp
    ./branches/next_ghost/libs/.svn/text-base/memman.cpp.svn-base
    ./branches/next_ghost/libs/.svn/text-base/system.h.svn-base
    ./branches/next_ghost/game/realgame.cpp
    ./branches/next_ghost/game/music.cpp
    ./branches/next_ghost/game/globmap.cpp
    ./branches/next_ghost/game/macros.cpp
    ./branches/next_ghost/game/gamesave.cpp
    ./branches/next_ghost/game/.svn/text-base/gamesave.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/skeldal.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/globmap.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/inv.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/dialogs.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/music.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/realgame.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/menu.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/book.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/macros.cpp.svn-base
    ./branches/next_ghost/game/.svn/text-base/interfac.cpp.svn-base
    ./branches/next_ghost/game/interfac.cpp
    ./branches/next_ghost/game/dialogs.cpp
    ./branches/next_ghost/game/menu.cpp
    ./branches/next_ghost/game/inv.cpp
    ./branches/next_ghost/game/book.cpp
    ./branches/next_ghost/game/skeldal.cpp
    
    real    0m0.625s
    user    0m0.560s
    sys     0m0.063s
    [jardik@Jardik-ArchPC skeldal]$
    
    Můj se zdá být cca 7x rychlejší.
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 12:27 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Tak díky tomuto je mé řešení 55x rychlejší a to za to stojí :-)
    Věřím v jednoho Boha.
    11.3.2011 12:32 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Hledač v souborech
    nepocitas do toho cas pisania programu
    11.3.2011 12:29 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Hledač v souborech
    skus grep -m1 --mmap -ralF Sys_FullPath .

    dalsi rozdiel je, ze preskakujes symlinky, preto som navrhoval find
    11.3.2011 12:31 disorder | blog: weblog
    Rozbalit Rozbalit vše Re: Hledač v souborech
    (nie, ze by spustanie procesov cez find bolo rychlejsie)
    11.3.2011 13:31 CET
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Samozrejme, clovek nesmi napsat neco jako find . -type f -exec grep ....., ale spis find -type f -print0 | xargs -0r grep .... - to se pak spusti jeden grep s vice souborama najednou, kdyz tam neni extremne moc souboru (nenarazi se na limit delky parametru prikazu), tak se to spusti opravdu pouze jednou.
    Jardík avatar 11.3.2011 12:39 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Oni v tom adresáři stejně symlinky nejsou (teda alespoň myslím).
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 12:44 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Aha, to "i" pro grep (jak psal člověk výše) když vynechám, tak mám 0m0.132s, ignore case jsem nechtěl. Tak to se omlouvám za nařčení grepu z pomalosti, je jen o kousíček pomalejší. Ten --mmap pro grep nemá žádný přínost, je to furt stejný.
    Věřím v jednoho Boha.
    11.3.2011 13:29 CET
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Tak samozrejme, zkus si jezte zmenit "F" na "E" a s tim "i" teprve uvidis pomalost:-) Samozrejme, hledani regexpu bude pomalejsi nez porovnavani znak po znaku, a ignore-case to taky zpomaluje.

    Na druhou stranu, grep ma mnoho dalsich funkci: puvodne grep vypisuje cely radek, kde se hledany vyraz vyskytuje, ale to jsem zablokoval pomoci "-l"; dale grep umoznuje vypsat radky, kde se hledany vyraz NEVYSKYTUJE "-v"; muzes si nechat zobrazit pouze pocet nalezenych radku; dale je mozne zobrazit X radku pred nalezenym a za nalezenym radkem "-B" a "-A" nebo "-C"; pak taky muzes zadat soubor, ktery obsahuje hledane texty "-F"; muzes si nechat vypsat cisla radek nebo byte offset radku s hledanym textem; muzes urcite, jestli se binarni soubory maji prohledavat nebo se maji brat jako ze text tam nelezen nebyl "-a" a "-I" resp. "--binary-files". Vetsina tehle prepinacu se musi behem behu nejakym zpusobem testovat, takze tam bude spousta dalsich "if" navic, nez ma tvuj programek, takze je samozrejme, ze tvuj program bude rychlejsi. Je to asi neco podobneho, jako kdybys zkousel srovna rychlost tveho programu, ktery spocita "1+1" a zobrazi vysledek a nejakeho jineho programu, ktery umi zpracovat a vypocitat jakykoliv zadany matematicky vyraz.

    Takze rychlostne sice grep nepredci, ale kdyz budes chtit pokazde hledat trosku jinym zpusobem (rozumej implementovat nejakou grep funkcionalitu), tak na tom stravic o hodne vic casu a navic skoncis mozna na stejne rychlosti jako grep, nebo mozna jeste hur.

    Lepsi nez neco zacnes bastlit, tak si projdi linuxove utilitky (tady tusim vychazel/vychazi nejakej serial o linuxovych utilitkach) a zkus najit nejakou, ktera umi to, co ty chces (v manu pak hledej detaily). Obcas musis svuj pozadavek rozlozit na mensi casti a pak to prohnat pres rouru nekolika utilitkama.
    11.3.2011 13:35 CET
    Rozbalit Rozbalit vše Re: Hledač v souborech
    A jeste jedna vec. Asi by bylo lepsi opravdu pouzit find, protoze hledat neco v .svn je docela zbytecny. Takze final bych osobne udelal find KDE_HLEDAT -type f -not -path '*/.svn/*' -print0 | xargs -0r grep -lFI HLEDANY bez "-i" a s "-I" (binarni soubory ignorovat).
    11.3.2011 06:42 Radek Miček | skóre: 23 | blog: radekm_blog
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Pro normální texty a delší vzorky by šel čas zlepšit použitím algoritmu Boyer–Moore–Horspool.
    Jardík avatar 11.3.2011 12:25 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    Super, dík:
    real    0m0.141s
    
    Věřím v jednoho Boha.
    Jardík avatar 11.3.2011 12:38 Jardík | skóre: 40 | blog: jarda_bloguje
    Rozbalit Rozbalit vše Re: Hledač v souborech
    A to jsem nezapnul optimalizace, s -O2 tam je skoro přesně 0.100s.
    Věřím v jednoho Boha.

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.