Ich habe gerade angefangen bash und ich mache ein Such-Skript, das nach Dateien suchen und ein Muster grep. Einfache Idee:BASH grep Muster Dateiname am Ende der Zeile
find $HOME -type f | grep $1
Im aktuellen Skript finde ich alles, was $ 1 (Dateien und Verzeichnisse) enthält. Ich möchte nur das Muster im Dateinamen übereinstimmen, ich möchte nicht die Verzeichnisse im Pfad übereinstimmen. Ich habe viele fortgeschrittene Ausdrücke mit Symbolen wie "/.**$" usw. ausprobiert, um in einem bestimmten Teil zu grepen, aber ehrlich gesagt ist es für einen neuen Benutzer ein bisschen schwierig.
Cut-Tool ist keine Option, weil ich den Pfad der Datei möchte.
EDIT:
Correct Beispiel:
$ ./search test
/home/user/documents/test.txt
/home/user/downloads/blahtestblah.py
Falsches Beispiel:
$ ./search test
/home/user/test/whatever.txt
in dem falschen Beispiel grep das Schlüsselwort in dem Pfad angepasst, ein Verzeichnis übereinstimmen.
Können Sie zeigen uns einen tatsächlichen Probeneingang und den Ausgang Sie davon erwarten – Inian
Verwendung:
Sie auch die
-regex
Schalter auffind
statt kochend die Ausgabegrep
verwenden könnten 'basename' wie' find $ HOME -type f | grep $ (Basisname $ 1) ', aber warum machst du so? nicht effizient Weg, 'find' kann es tun, ohne' grep' –Ty, aber hat nicht funktioniert. Ich benutze Grep, weil das Schlüsselwort innerhalb des Namens sein muss, nicht nur der Name selbst. Bearbeitet mit einigen Beispielen – Eisenberk