grep
und find
#
grep
#
grep
findet Zeilen in Dateien, die einem regulären Ausdruck entsprechen. Im folgenden Beispiel wird nach der Zeichenkette Python
gesucht:
[1]:
!grep Python ../index.rst
IPython
`IPython <https://ipython.org/>`_ oder *Interactive Python* war zunächst ein
erweiterter Python-Interpreter, der nun zu einem umfangreichen Projekt geworden
bereitstellen soll. So ist IPython heute nicht nur eine interaktive
Schnittstelle zu Python, sondern bietet auch eine Reihe nützlicher syntaktischer
Ergänzungen für die Sprache. Darüberhinaus ist IPython eng mit dem
* `Miki Tebeka - IPython: The Productivity Booster
Die Option -w
begrenzt die Treffer auf die Wortgrenzen, so dass IPython
ignoriert wird:
[2]:
!grep -w Python ../index.rst
`IPython <https://ipython.org/>`_ oder *Interactive Python* war zunächst ein
erweiterter Python-Interpreter, der nun zu einem umfangreichen Projekt geworden
Schnittstelle zu Python, sondern bietet auch eine Reihe nützlicher syntaktischer
-n
zeigt die Zeilennummern an, die übereinstimmen:
[3]:
!grep -n -w Python ../index.rst
4:`IPython <https://ipython.org/>`_ oder *Interactive Python* war zunächst ein
5:erweiterter Python-Interpreter, der nun zu einem umfangreichen Projekt geworden
8:Schnittstelle zu Python, sondern bietet auch eine Reihe nützlicher syntaktischer
-v
invertiert unsere Suche
[4]:
!grep -n -v "^ " ../index.rst
1:IPython
2:=======
3:
4:`IPython <https://ipython.org/>`_ oder *Interactive Python* war zunächst ein
5:erweiterter Python-Interpreter, der nun zu einem umfangreichen Projekt geworden
6:ist, das Tools für den gesamten Lebenszyklus der Forschungsdatenverarbeitung
7:bereitstellen soll. So ist IPython heute nicht nur eine interaktive
8:Schnittstelle zu Python, sondern bietet auch eine Reihe nützlicher syntaktischer
9:Ergänzungen für die Sprache. Darüberhinaus ist IPython eng mit dem
10:`Jupyter-Projekt <https://jupyter.org/>`_ verbunden.
11:
12:.. seealso::
15:
16:.. toctree::
20:
grep
hat viele andere Optionen. Um herauszufinden, welche das sind, könnt ihr folgendes eingeben:
[5]:
!grep --help
usage: grep [-abcdDEFGHhIiJLlMmnOopqRSsUVvwXxZz] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
Im folgenden Beispiel verwenden wir die Option -E
und setzen das Muster in Anführungszeichen, damit die Shell nicht versucht, es zu interpretieren. ^
im Muster verankert die Übereinstimmung am Anfang der Zeile und .
entspricht einem einzelnen Zeichen.
[6]:
!grep -n -E "^.Python" ../index.rst
1:IPython
find
#
find .
sucht in diesem Verzeichnis, wobei die Suche mit -type d
auf Verzeichnisse beschränkt wird.
[7]:
!find .. -type d
..
../mypackage
../.hypothesis
../.hypothesis/unicode_data
../.hypothesis/unicode_data/14.0.0
../unix-shell
../.ipynb_checkpoints
Mit -type f
ist die Suche auf Dateien beschränkt.
[8]:
!find . -type f
./index.rst
./sorted-length.txt
./create-delete.ipynb
./length.txt
./dvc.list
./file-system.ipynb
./pipes-filters.ipynb
./shell-variables.ipynb
./grep-find.ipynb
Mit -mtime
wird die Suche auf die letzten X
Tage beschränkt, in unserem Beispiel auf den letzten Tag:
[9]:
!find . -mtime -1
.
./sorted-length.txt
./create-delete.ipynb
./length.txt
./dvc.list
./file-system.ipynb
./pipes-filters.ipynb
./grep-find.ipynb
Mit -name
könnt ihr die Suche nach Dateinamen filtern.
[10]:
!find .. -name "*.rst"
../index.rst
../unix-shell/index.rst
../extensions.rst
../start.rst
Jetzt zählen wir die Zeichen in den Dateien mit der Endung .rst
:
[11]:
!wc -c $(find .. -name "*.rst")
891 ../index.rst
441 ../unix-shell/index.rst
2281 ../extensions.rst
1216 ../start.rst
4829 total
Es ist auch möglich, in diesen Dateien nach einem regulären Ausdruck zu suchen:
[12]:
!grep "ipython.org" $(find .. -name "*.rst")
../index.rst:`IPython <https://ipython.org/>`_ oder *Interactive Python* war zunächst ein
Schließlich filtern wir alle Ergebnisse heraus, deren Pfad ipynb_checkpoints
enthält:
[13]:
!find . -name "*.ipynb" | grep -v ipynb_checkpoints
./create-delete.ipynb
./file-system.ipynb
./pipes-filters.ipynb
./shell-variables.ipynb
./grep-find.ipynb