Linux:alle Dateien listen, die einen bestimmten String enthalten
Jens17
- sonstiges
0 Gunnar Bittersmann0 misterunknown0 Jörg Reinholz0 M.0 Jens17
Hallo!
Ich weiß nicht viel von Linuxbefehlen und suche jetzt eine Möglichkeit, wie ich ein Verzeichnis rekursiv durchsuchen kann und mir alle Dateien (inkl. Verzeichnispfad) anzeigen lassen kann, die einen bestimmten String enthalten.
Also z.B.: möchte ich alle index.html-Dateien aufgelistet bekommen, die den String "<body>" enthalten.
Ich habe es mit grep probiert, aber da kann weiß ich nicht, wie ich ein Muster für die zu durchsuchenden Dateien angeben kann.
Vielen Dank,
Jens
@@Jens17:
nuqneH
Ich weiß nicht viel von Linuxbefehlen und suche jetzt eine Möglichkeit, wie ich ein Verzeichnis rekursiv durchsuchen kann und mir alle Dateien (inkl. Verzeichnispfad) anzeigen lassen kann, die einen bestimmten String enthalten.
find.
Qapla'
Moin,
Ich habe es mit grep probiert, aber da kann weiß ich nicht, wie ich ein Muster für die zu durchsuchenden Dateien angeben kann.
$ grep -rl Muster *
Wahlweise egrep für reguläre Expressionen.
Grüße Marco
Also z.B.: möchte ich alle index.html-Dateien aufgelistet bekommen, die den String "<body>" enthalten.
Fingerübung:
user@host:/var/www$ grep -rR '<body>' * | cut -d':' -f1 | sort -u | grep index.html > liste.txt 2> /dev/null
man grep, man cut, man sort zeigt, was das macht.
Jörg Reionholz
Mahlzeit,
ich hab mir da vor öanger zeit ein Script gezimmert, was ich immer noch nutze. Geht zwar auch anders, aber funktioniert.
#!/bin/sh
if [ $# -lt 2 ]; then
echo "Usage: search PATH STRING [FILES] [IGNORE[|IGONRE[|IGNORE ... ]]]"
exit
fi
if [ "$3" ]; then
FILE="$3"
else
FILE="*"
fi
if [ "$4" ]; then
find $1 -type f -iname "$FILE" -exec grep -E -n "$2" -H '{}' \; | cut -d':' -f1-2 | egrep -v "$4"
else
find $1 -type f -iname "$FILE" -exec grep -E -n "$2" -H '{}' \; | cut -d':' -f1-2
fi
Das Script liegt unter dem namen "search" im PATH und zeigt zu den Suchergebnissen die Zeilennummer zum Dateinamen an.
FILES kann Wildcards enthalten, muss dann aber in Quotes stehen.