Ich habe einen Verzeichnisbaum, der aus mehreren tausend Unterverzeichnissen besteht, aber ich muss häufig nur eine kleine Teilmenge dieser Verzeichnisse durchsuchen. Wie kann ich grep
nur die Unterverzeichnisse verwenden, die einem Muster entsprechen?
Angenommen, ich habe diese Unterverzeichnisse, in denen ich greifen möchte:
...
...
...
/foo
/fooLib
/fooHandler
/fooGizmo
...
...
...
Die ...
obigen Einträge repräsentieren die Tausenden anderer Verzeichnisse, in denen ich nicht greifen möchte.
Angenommen, ich suche nach allen Instanzen von bar
, wenn ich dies tue:
grep -n --recursive bar *
Ich würde finden, wonach ich suche, aber in allen Verzeichnissen. Wie kann ich nur in den Unterverzeichnissen suchen, die dem Muster entsprechen foo*
?
/foo
und Freunde suchen ? In/foo
und/foo/bar
und/foo/bar/qux
und so weiter aber nicht/wibble/foo
? In/foo
und/wibble/foo
aber nicht/foo/bar
? In/foo
und/foo/bar
und/wibble/foo
aber nicht/elsewhere
?Antworten:
Sie können grep verwenden und die Kombination wie folgt finden:
Oder Sie können verwenden
Oder nur mit grep
quelle
foo*
?grep -R "test" /foo*
) ist genau das, was ich gerade mache, also werde ich akzeptieren.{}
und der Backslash?versuchen Sie
grep foo* <other parts>
zB:grep foo* -name "book*"
quelle
bar
in allen Dateien in den genannten Unterverzeichnissen suchefoo*
, sollte dies folgendermaßen aussehen :grep --recursive bar ./foo*/*
?