balert schrieb:
@Lunar: mit 'grep -r "$messages" /opt/hallo/dings' konnte ich leider nicht das gewünschte Ergebnis erreichen.
Das liegt daran weil das Suchmuster eine Regex ist und Sonderzeichen wie "(" besonders behandelt werden. Ich würde dir allerdiengs eher "ack" ans herz legen (Packet: ack-grep). Das geht schon automatisch rekursiv die Dateien vom aktuellen Verzeichnis durch und gibt Dateiname und Zeilennummer per default aus. Wenn du nach Literalen Text suchst musst du alle Sonderzeichen vorher mit einem Backslash escapen oder bei ack gibt es noch die Option "-Q" womit der Suchstring wie Text und nicht wie eine Regex behandelt wird.
ack -Q 'require("lib.php");'
Möchtest du nur PHP Dateien durchsuchen dann kannst du noch "--type=php" hinzufügen
ack 'require("lib.php");' --type=php
Ansonsten wenn du den Inhalt einer Variablen matchen möchtest also den Inhalt von $message und der Inhalt von $message Literal also keine Regex sein soll musst du ebenfalls "-Q" hinzufügen.
ack -Q "$message" --type=php
sidburn@sid:~/perl$ echo $message
require("lib.php")
sidburn@sid:~/perl$ ack -Q "$message" --type=php
php.php
1:require("lib.php");