• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

wie sucht man bestimmte expression mit der bash?

Rebel2k

Newbie
hallo

ich hab mal ne frage zur bash!

Und zwar suche ich in meinem Ordner auf dem ich nur per ssh zugreifen kann ohne nen WM nach einer bestimmten zeile in einer Datei die ich alledings nicht kenne. Sprich ein bestimte Ausdruck in einer txt/php datei den ich finden muss!

kennt ihr nen sinnvollen befehl wie ich diesen Ausdruck finden kann?
Problematisch ist allerding das mein CMS sehr viele verschiedenen Ordner hat, und irgendwo dort gilt es diesen Ausdruck zu finden :oops:

ich danke euch schon mal für eure hilfe!
 
Moin Rebel2k,

Kurzantwort: man grep

Etwas längere Fassung: Wenn Du nicht weißt nach welchem Ausdruck Du suchen sollst, oder was diesen bezeichnet, wirst Du keine Chanche haben. Wenn Du aber weißt wonach Du suchst, wird es einfacher und es ist die Frage was dafür verwendet wird. Wenn Du z.B. weißt das es sich um eine Änderung zwischen einer alten und einer neuen Datei handelt kannst Du diff verwenden, ansonsten wenn Du weißt wie sich die Zeile bildet verwendest Du grep. Schau dir die manpages an, oder z.B. die entsprechenden Kapitel in der Linuxfibel an.
 

regexer

Advanced Hacker
Rebel2k schrieb:
Problematisch ist allerding das mein CMS sehr viele verschiedenen Ordner hat, und irgendwo dort gilt es diesen Ausdruck zu finden
Den Vorschlag von Geier0815 dürfte helfen. Grep kennt auf neueren Linux-Systemen nämlich auch eine Option "-R" für rekursives Suchen. Da würden auch deine Unterordner durchsucht.
 

TeXpert

Guru
notoxp schrieb:
Rebel2k schrieb:
Problematisch ist allerding das mein CMS sehr viele verschiedenen Ordner hat, und irgendwo dort gilt es diesen Ausdruck zu finden
Den Vorschlag von Geier0815 dürfte helfen. Grep kennt auf neueren Linux-Systemen nämlich auch eine Option "-R" für rekursives Suchen. Da würden auch deine Unterordner durchsucht.

oder Du machst es klassisch mit der A-Note in find und der B-Note in grep ;)
 
Mein Lieblingskommando wäre:

find . -type f -exec grep DeinSuchbegriff {} /dev/null \;
=> find übergibt den Namen in {}
=> grep SeinSuchbegriff "file" /dev/null
=> "file" /dev/null sind 2 files: grep gibt dann auch den Namen der Datei aus. und in /dev/null kann grep nichts finden..

Haveaniceday
 

TeXpert

Guru
haveaniceday schrieb:
find . -type f -exec grep DeinSuchbegriff {} /dev/null \;

und warum würdest Du das mit /dev/null lösen, das ist mir spontan nicht klar, ein
Code:
find . -type f -exec grep 'DeinSuchbegriff' {} \;
macht genau das gesuchte .... *verwundert*
 
Wenn du nur "grep text file" machst wird der Dateiname nicht mit ausgegeben.
Bei einem find unpraktisch. Welche von den Dateien wars den gerade...
Wenn grep 2 Namen bekommt ( einer halt /dev/null ) gibt es den Filenamen mit aus.

Haveaniceday
 

TeXpert

Guru
dafür gibts grep -H ;)

oder Du verwendest xarg, also
Code:
find . foobar | xarg grep 'search'
dann bekommt grep so viele Dateien auf einen Schlag wie die Cmd-Line verträgt.

aber IMHO ist die
Code:
-exec grep -H 'search' {} \;
Lösung offensichtlicher
 
Ich arbeite zu oft auf tru64, Sun, manchmal AIX... Da gibt es leider nicht überall "gnu" grep/tools.
"-H" ist eleganter (und für nur Linux der elegantere ) nur der andere Weg geht immer.

xargs könnte gerade die letzte Datei als einzelne an grep geben.

Haveaniceday
 

gameboy

Hacker
Hallo nappio4,

das geht mit sed, erfordert allerdings ein gewisses Maß an Einarbeitung. Am besten suchst Du Dir mit Google oder del.icio.us ein Tutorial mit einfachen Beispielen, um einen Einstieg zu bekommen.

Viele Grüße,
gameboy.
 
nappio4 schrieb:
Hallo,

ich würde gerne nicht nur suchen, sondern auch ersetzten, weij jmd. wie das geht?

Danke!

Über Google suchen "sed -i -e" site:linux-club.de

find . -type f -exec sed -i -e "s#ersetzen#durch#" {} \;
Oder halt ähnlich...

Haveaniceday
 
Oben