Hallo,
bei Linux gibt es doch einen Befehl, der alle Dateien in einem Verzeichnis (evtl. auch Unterverzeichnisse) nach einem bestimmten String durchsucht, oder?
Kann mir den mal jemand nennen?
Gruß
Jochen
Hallo,
bei Linux gibt es doch einen Befehl, der alle Dateien in einem Verzeichnis (evtl. auch Unterverzeichnisse) nach einem bestimmten String durchsucht, oder?
Kann mir den mal jemand nennen?
Gruß
Jochen
der Befehl heisst grep.
Beispiel:
grep -i ‚muster‘ *
-> durchsucht alle Dateien im Verzeichnis nach „muster“ ignoriert dabei Groß und Kleinscheibung.
bei Linux gibt es doch einen Befehl, der alle Dateien in einem
Verzeichnis (evtl. auch Unterverzeichnisse) nach einem
bestimmten String durchsucht, oder?
Hi Jochen,
wenn’s denn auch mit Subdirectories sein soll, wirst du um eine Kombination grep + find nicht herumkommen.
In etwa so (ungestestet):
find . -type f -exec grep -q 'Suchstring' {} \; -a -exec ls -l {} \;
gruß
bernhard
bei Linux gibt es doch einen Befehl, der alle Dateien in einem
Verzeichnis (evtl. auch Unterverzeichnisse) nach einem
bestimmten String durchsucht, oder?Hi Jochen,
wenn’s denn auch mit Subdirectories sein soll, wirst du um
eine Kombination grep + find nicht herumkommen.
Hallo ihr,
Wieso? Grep kann doch auch rekursiv (Option -r) durch Unterverzeichnisse wühlen.
Gruß
Fritze
Wieso? Grep kann doch auch rekursiv (Option -r) durch
Unterverzeichnisse wühlen.
niehaus@niehaus:~ \> grep -r Tüdelüt .
grep: Ungültige Option -- r
Usage: grep [OPTION]... PATTERN [FILE]...
grep --help gibt Ihnen mehr Informationen.
niehaus@niehaus:~ \> grep --version
grep (GNU grep) 2.2
**8\>
niehaus@corrosive:~ \> grep -r Tüdelüt .
niehaus@corrosive:~ \>
niehaus@corrosive:~ \> grep --version
grep (GNU grep) 2.4.2**
fritze@susie:~\> grep --version
grep (GNU grep) 2.5.1
fritze@susie:~\> man grep
NAME
grep, egrep, fgrep - print lines matching a pattern
SYNOPSIS
grep [options] PATTERN [FILE...]
grep [options] [-e PATTERN | -f FILE] [FILE...]
DESCRIPTION
Grep searches the named input FILEs (or standard input if
no files are named, or the file name - is given) for lines
containing a match to the given PATTERN. By default, grep
prints the matching lines.
In addition, two variant programs egrep and fgrep are
available. Egrep is the same as grep -E. Fgrep is the
same as grep -F.
OPTIONS
[...]
-R, -r, --recursive
Read all files under each directory, recursively;
this is equivalent to the -d recurse option.
Mach mal 'n Update.
Gruß
Fritze
Mach mal 'n Update.
In der Tat. Das Laptop kann ich schmerzfrei „auf Arbeit“ anstöpseln, über Modem ist das sonst leidlich uncool…
Sebatian
Wieso? Grep kann doch auch rekursiv (Option -r) durch
Unterverzeichnisse wühlen.
Hi Fritze,
unter AIX leider nicht
Gruß
bernhard
Wieso? Grep kann doch auch rekursiv (Option -r) durch
Unterverzeichnisse wühlen.
unter AIX leider nicht
Gefragt war aber ausgrücklich nach Linux.
- überhaupt sind die ganzen Standard-Tools im Vergleich zu
ihren GNU-Verwandten sehr abgespeckt
Ja. In der Tat.
Aus Gründen der Portabilität sollte man sich sehr genau überlegen, ob man wirklich die erweiterten Optionen der GNU-Tools nutzen möchte…
Deshalb halte ich den Ansatz mit „grep -r“ ‚im Allgemeinen‘ für problematisch (in diesem Fall aber immerhin legitim…)
Sebastian
mein vorschlag
Hallo Jochen!
Ich habe vor einiger Zeit schonmal vor dem selben Problem gestanden und mir dann ein Script geschrieben, welches sich gut bewährt hat. Allerdings ist dieses für AIX gedacht. Du kannst es aber unbedenklich mal bei Linux ausprobieren.
Lass mich mal wissen, ob’s bei dir funktioniert!
Mayo
Inhalt des Scripts (bei mir hat’s den Namen „get_grep“):
********************************************************************
corr=root
name=whoami
if ["$corr" = „$name“]
then
continue
else
echo
echo " Sie sind als $name angemeldet!"
echo " Bitte melden Sie sich als ROOT an!"
echo " Vorgang ist abgebrochen."
echo
exit
fi
SYNTAX=$*
TREE=$1
VALUE=$2
if test $# -ne 2
then echo
echo „‚get_grep $SYNTAX‘ inkorrekt, breche deshalb die Aktion ab!“
echo „Syntax lautet: ‚get_grep ausgangsverzeichnis suchmuster‘“
echo
exit
fi
echo
echo „Ermittle alle Dateien im Verzeichnisbaum ‚$TREE‘“
echo „in denen ‚$VALUE‘ als Suchmuster vorkommt!“
echo „Bitte warten, Ergebnisse folgen gleich …“
echo
find $TREE -type f > /tmp/list_grep.root
rm /tmp/get_grep_files.root
cat /tmp/list_grep.root | while read FILE
do
grep -il $VALUE $FILE 2>/tmp/error_grep.tmp.root | tee -ai /tmp/get_grep_files.root
done
echo
rm /tmp/list_grep.root
rm /tmp/error_grep.tmp.root
echo „Dies waren alle Dateien im Verzeichnisbaum ‚$TREE‘“
echo „in denen ‚$VALUE‘ als Suchmuster vorkommt!“
echo