Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.

Autor Téma: Jak najit soubory ktere obsahuji urcity textovy retezec.  (Přečteno 5375 krát)

polo23

  • Člen
  • **
  • Příspěvků: 243
  • Karma: +8/-5
    • Zobrazit profil
Jak najit soubory ktere obsahuji urcity textovy retezec.
« kdy: 23 Květen 2009, 18:38:47 »
Ahoj, chtel bych se zeptat jak to udelat kdyz chci najit vsechny soubory v systemu a nebo v urcitem adresari ktere obsahuji urcity textovy retezec? Jedine co me napada je grep -R 'retezec' *. Buhuzel to jsem zkousel a nefunguje mi to-nevim zda program tak dlouho pracuje ale disk vytizeny neni...

8472

  • Člen
  • **
  • Příspěvků: 460
  • Karma: +26/-1
  • Zivot je ako rebrik do kurina, kratky a osraty ...
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #1 kdy: 23 Květen 2009, 21:23:40 »
ja skor pouzivam namiesto znaku apostrof ' uvodzovky " , ale neviem, s apostrofom nemam skusenost v tomto pripade, mozno to nevadi.

co keby si si to hladanie najskorej vyskusal v nejakom testovacom adresari s niecim co si tam pripravis na pokusy, aby si zistil co ti bude fungovat a co nie.

kazdopadne, ak das prehlavadat cely disk, tak urcite musis pocitat s tym ze to moze trvat dost dlho. a to na platforme nezalezi, ci to je linux alebo windows alebo nieco ine, ak zacnes prehladavat tisicky suborov na disku, tak to fakt zabije dost casu.
mozno by bolo dobre si skusit zmensit oblast ktoru prehliadas, povedzme len na nejake urcite adresare a pod.
Logic clearly dictates that the needs of the many outweigh the needs of the few.

premet

  • Host
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #2 kdy: 23 Květen 2009, 21:27:16 »
Myslím, že by mělo fungovat
Kód: [Vybrat]
grep -lR retezec ~/to vytiskne soubory, které obsahují text "řetězec" v domovském adresáři

nettezzaumana

  • Host
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #3 kdy: 24 Květen 2009, 00:00:35 »
hehe. hosi, vidim ze Vam chybi praxe ..

> grep 'rgrep' ~/.* 2>/dev/null
/home/kpt/.bashrc:alias rgrep="grep -rI "

polo23

  • Člen
  • **
  • Příspěvků: 243
  • Karma: +8/-5
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #4 kdy: 24 Květen 2009, 08:22:00 »
To nettezzaumana: ...a mohl by sji prosim jeste vysvetlit tu sysntaxi toho prikazu? Abych vedel co presne to znamena. Zda se mi ze na to ze chci najit nejaky retezec v souboru tam toho mas nejak moc. Jinak zkousel jsem grep -lR retezec ~/ a to najde ten soubor jen v pripade ze zadam cestu presne jinak ne:(

premet

  • Host
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #5 kdy: 24 Květen 2009, 10:14:23 »
Co ti na tom nefunguje ? Je jasný , že musíš zadat cestu ve které se ten adresář nachází, adresáře o úroveň výš to prohledávat nebude  :).
Kód: [Vybrat]
[prema@fedora ~]$ grep -lR 'blablablabla' ~/test/
/home/prema/test/bla
/home/prema/test/blabla/blabla
Kód: [Vybrat]
[prema@fedora ~]$ grep -lR 'blablablabla' ~/Plocha/
/home/prema/Plocha/test/bla
/home/prema/Plocha/test/blabla/blabla

polo23

  • Člen
  • **
  • Příspěvků: 243
  • Karma: +8/-5
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #6 kdy: 24 Květen 2009, 16:43:50 »
No jasne ze to nebude vyhledavat v adresarich o uroven vys ale melo by to rphledat vsechny o urovene niz. Takze kdyz dam:
grep -lR 'blabla' / tak by to melo prohledat cely system ne? No a me to hledany retezec nenajde. Najde ho jen kdyz uvedu presny adresar. Treba tady priklad:

  grep -lR 'test serveru Apache' /
grep: varování: /usr/X11R6/bin/X11: smyčka pro rekurzivní průchod

grep: /usr/share/doc/bash/completion-contrib: není souborem ani adresářem
grep: /usr/share/doc/bash/README.bash_completion.gz: není souborem ani adresářem
grep: /usr/share/terminfo/k/kon2: není souborem ani adresářem
grep: /usr/share/java/saxonb-dom4j.jar: není souborem ani adresářem
grep: /usr/share/ppd/2-third-party: není souborem ani adresářem
grep: varování: /usr/bin/X11: smyčka pro rekurzivní průchod

grep: /usr/src/linux-headers-2.6.26-2-686/.tmp_versions: není souborem ani adresářem
grep: /usr/src/linux-headers-2.6.26-2-686/virt: není souborem ani adresářem
grep: /usr/lib/openoffice/basis-link/program/classes/bsh.jar: není souborem ani adresářem
grep: /usr/lib/openoffice/basis3.0/program/classes/bsh.jar: není souborem ani adresářem
grep: /usr/lib/python2.4/site-packages/python-support.pth: není souborem ani adresářem
grep: /usr/lib/jvm/java-6-openjdk/jre/lib/security/cacerts: není souborem ani adresářem
grep: /usr/lib/jvm/java-6-openjdk/man/ja: není souborem ani adresářem

Program neskonci proste zustane stat, HDD prestane hrabat. To je vse...

nettezzaumana

  • Host
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #7 kdy: 24 Květen 2009, 17:09:31 »
@polo23

man grep ## parametr -I (velke i ne L) zpusobi ze to neprohledava binarni soubory, -r je 'recursive' ..
man alias

polo23

  • Člen
  • **
  • Příspěvků: 243
  • Karma: +8/-5
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #8 kdy: 24 Květen 2009, 17:51:12 »
dopadlo to uplne stejne jako v prechazejicim pripade:(
 
:/home/polo# grep -Ir 'test serveru Apache' /
grep: varování: /usr/X11R6/bin/X11: smyčka pro rekurzivní průchod

grep: /usr/share/doc/bash/completion-contrib: není souborem ani adresářem
grep: /usr/share/doc/bash/README.bash_completion.gz: není souborem ani adresářem
grep: /usr/share/terminfo/k/kon2: není souborem ani adresářem
grep: /usr/share/java/saxonb-dom4j.jar: není souborem ani adresářem
grep: /usr/share/ppd/2-third-party: není souborem ani adresářem
grep: varování: /usr/bin/X11: smyčka pro rekurzivní průchod

grep: /usr/src/linux-headers-2.6.26-2-686/.tmp_versions: není souborem ani adresářem
grep: /usr/src/linux-headers-2.6.26-2-686/virt: není souborem ani adresářem
grep: /usr/lib/openoffice/basis-link/program/classes/bsh.jar: není souborem ani adresářem
grep: /usr/lib/openoffice/basis3.0/program/classes/bsh.jar: není souborem ani adresářem
grep: /usr/lib/python2.4/site-packages/python-support.pth: není souborem ani adresářem
grep: /usr/lib/jvm/java-6-openjdk/jre/lib/security/cacerts: není souborem ani adresářem
grep: /usr/lib/jvm/java-6-openjdk/man/ja: není souborem ani adresářem

Tady se program sekne...prohledavani skonci.

starenka

  • Závislák
  • ****
  • Příspěvků: 1276
  • Karma: +139/-15
  • Karma: plynová [zapalovač] [hasičák]
    • Zobrazit profil
    • /home/starenka
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #9 kdy: 24 Květen 2009, 17:54:51 »
grep -lir 'oplzla opice' * (vsechny soubory v akt.adr rekurzivne)
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

polo23

  • Člen
  • **
  • Příspěvků: 243
  • Karma: +8/-5
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #10 kdy: 24 Květen 2009, 19:17:53 »
grep -lir 'test serveru' *
grep: lib/defoma/gs.d/dirs/fonts/AnjaliOldLipi-0.730.ttf: není souborem ani adresářem
grep: lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/AnjaliOldLipi-0.730.ttf: není souborem ani adresářem

I tentokrat to dopadlo stejne...disk se rozjel...pak se zastavil. Program neskoncil.

arrange

  • Závislák
  • ****
  • Příspěvků: 4031
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #11 kdy: 24 Květen 2009, 21:36:04 »
grep -lir 'test serveru' *
grep: lib/defoma/gs.d/dirs/fonts/AnjaliOldLipi-0.730.ttf: není souborem ani adresářem
grep: lib/defoma/x-ttcidfont-conf.d/dirs/TrueType/AnjaliOldLipi-0.730.ttf: není souborem ani adresářem

I tentokrat to dopadlo stejne...disk se rozjel...pak se zastavil. Program neskoncil.

Problém nastává, když chceš procházet různé specializované adresáře, jako /proc, /dev apod. Pak, i když přidáš přepínač -I do grepu nebo -type f do find, může dojít k chybám. Když jsem to zkoušel, tak u mě se to zaseklo na
Kód: [Vybrat]
sudo grep -I neco /proc/kmsgale takových kandidátů bude asi víc.

Možným řešením je tyto adresáře z hledání vynechat, já to dělám takto
Kód: [Vybrat]
sudo find /etc /home /usr /var -type f -exec grep -Il 'co_hledam' '{}' \; (čili to mám naopak-vyjmenuji adresáře, který chci prohledat; grep -<velké i, malé L>)
http://www.openstreetmap.org - mapy celého světa "wiki style"

qUAKER

  • Host
Re: Jak najit soubory ktere obsahuji urcity textovy retezec.
« Odpověď #12 kdy: 27 Květen 2009, 15:05:38 »
grep -lir --exclude-dir={/proc,/sys} 'test serveru' /