Avaleht
uus teema   vasta Tarkvara »  Linux & UNIX »  otsing ette antud failidest märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
borru
HV veteran
borru

liitunud: 21.12.2003




sõnum 08.01.2009 12:14:42 otsing ette antud failidest vasta tsitaadiga

Tere!
Oskab keegi mõnda sellist programmi nimetada mis leiaks failid ette antud kaustast, mille sisus peituvad vasted.
Täpsemalt PHP failide sisse peaks oskama piiluda see programm.
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 08.01.2009 13:33:10 vasta tsitaadiga

Selleks sobivad suurepäraselt find ja grep.

find on programm failide otsimiseks

grep on programm failidest teksti otsimiseks

Kombineerid need kokku ja voilaa:

grep 'tekst mida failidest otsida' $(find kataloog/kust/otsida/ -iname '*.php')


Sama asi kasutades xargs-i:

find kataloog/kust/otsida/ -iname '*.php' | xargs grep 'tekst mida failidest otsida'


Kui sind huvitavad vaid unikaalsed failinimed, siis:

find kataloog/kust/otsida/ -iname '*.php' | xargs grep 'tekst mida failidest otsida' | sed 's/:.*//' | uniq


Paljud GUI programmid, mis pakuvad Linuxis sedasama funktsionaalsust tegelikult kasutavad taustal find-i ja grep-i.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 08.01.2009 17:46:01 vasta tsitaadiga

nene - huvi pärast küsin, miks sa find väljundi xargsile söödad? Nö õpikunäitena on levinud on pigem --exec argument:
tsitaat:
find kataloog/kust/otsida/ -iname '*.php' --exec grep 'tekst mida failidest otsida' {};

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 08.01.2009 18:31:28 vasta tsitaadiga

Õigupoolest ma polnudki tollest exec asjast teadlik.

Kuid sinu näidatud kood vähemasti minul ei toimi. Pidin kirjutama midagi sellist (-H argument grepile selleks, et ta näitaks failinimesid):

find kataloog/kust/otsida/ -iname '*.php' -exec grep -H 'tekst mida failidest otsida' '{}' ';'


Üsna kohmakas mu meelest sedasi. Eelistaks siiski xargs või $(...) varianti.

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 08.01.2009 19:00:41 vasta tsitaadiga

Mm, unustasin semikooloni eest backslashi ära. Loogelisi sulge pole vaja escapeda.

tsitaat:
find kataloog/kust/otsida/ -iname '*.php' --exec grep 'tekst mida failidest otsida' {} \;

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
borru
HV veteran
borru

liitunud: 21.12.2003




sõnum 08.01.2009 19:52:21 vasta tsitaadiga

find: unknown predicate `--exec'

nene variant xargs-ga toimis.
Tänud!
Kommentaarid: 13 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 13
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 08.01.2009 20:01:08 vasta tsitaadiga

Ohjah, mul on nati pea laiali täna. Ühe kriipsuga "-exec" peab olema. On ilmselt viimane aeg päev ära lõpetada ja koju minna.
_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
troglodyte
Kreisi kasutaja
troglodyte

liitunud: 09.08.2002




sõnum 08.01.2009 21:55:43 vasta tsitaadiga

find -exec käivitab programmi iga leitud faili kohta, xargs aga annab teatud hulga (mida saab ka -n võtme abil muuta) sisendridu programmi argumentideks.

Lisaks (arendades edasi ühte nene näidet) on grepil mitmeid toredaid võtmeid, nagu näiteks -l mis prindibki ainult matchinud faili nime.
Ehk siis järgmine käsurida peaks võrdlemisi efektiivne olema:
find kataloog/kust/otsida/ -iname '*.php' | xargs grep -l 'tekst mida failidest otsida'

_________________
ph'nglui mglw'nafh Cthulhu R'lyeh wgah'nagl fhtagn
Kommentaarid: 34 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
nene
Kreisi kasutaja
nene

liitunud: 20.03.2004




sõnum 09.01.2009 01:58:12 vasta tsitaadiga

troglodyte kirjutas:
näiteks -l mis prindibki ainult matchinud faili nime.

Pagan. Enne just mõtlesin, et grepil peaks selline võti olema, aga otsisin mis ma otsisin, kuidagi ei suutnud manuaalist leida. icon_smile.gif

_________________
Mõistus otsas? Pane pinusse...
Kommentaarid: 24 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 23
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Linux & UNIX »  otsing ette antud failidest
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.