Skip to main content

Suchen & Finden

"find" sucht nach Dateinamen

Bsp.: durchsucht ab dem aktuellen Ordner nach Dateien in dessen Inhalt loopback vorkommt

find . -name '*loopback*'

# Ergebnis
./.phoronix-test-suite/openbenchmarking.org/pts/network-loopback-1.0.1.zip
./.phoronix-test-suite/openbenchmarking.org/pts/serial-loopback-1.0.2.zip
./.phoronix-test-suite/test-profiles/pts/serial-loopback-1.0.2
./.phoronix-test-suite/test-profiles/pts/network-loopback-1.0.1

oder durchsucht ab dem aktuellen Ordner nach Dateien dessen Namen "loopback" beinhaltet

find . | grep loopback

# Ergebnis
./.phoronix-test-suite/openbenchmarking.org/pts/network-loopback-1.0.1.zip
./.phoronix-test-suite/openbenchmarking.org/pts/serial-loopback-1.0.2.zip
./.phoronix-test-suite/test-profiles/pts/serial-loopback-1.0.2
./.phoronix-test-suite/test-profiles/pts/serial-loopback-1.0.2/results-definition.xml

"grep" sucht in den Dateien

grep txt * -R

Suchen und ersetzen

https://www.tecchannel.de/a/suchen-und-ersetzen-in-dateien-unter-linux,2033812

Ein Datei durchsuchen und ersetzen

sed -i "s/doof/lieb/g" /pfad/zur/datei

Parameter g sucht weiter nach Treffer

Alle Dateien im Ordner /tmp/ mit dem Anfang test durchsuchen und ersetzen

Bsp.: sucht "doof" in allen Dateien mit test und ersetzt es mit "lieb"

grep -rl doof /tmp/test* | xargs sed -i -e 's,doof,lieb,g'

Das Gleiche mit dem Befehl find durchführen

find /<Pfad>/<Dateien> -type f -exec sed -i 's/<alter Begriff>/<neuer Begriff>/g' {} \;

Begrenzung der Verzeichnistiefe, die durchsucht werden sollen.

mit -maxdepth:

find /srv/ -maxdepth 3 -type f -exec sed -i 's/lan\.foo\.info/lan.foo.net/g' {} \;

Oder nur bestimmte Dateitypen durchsuchen (viel schneller):

# Nur Config-Dateien (Apache, PHP, etc.)
find /srv/ -type f \( -name "*.conf" -o -name "*.php" -o -name "*.html" -o -name "*.xml" \) -exec sed -i 's/lan\.foo\.info/lan.foo.net/g' {} \;

Oder bestimmte Verzeichnisse ausschließen:

find /srv/ -type f -not -path "*/cache/*" -not -path "*/tmp/*" -not -path "*/logs/*" -exec sed -i 's/lan\.foo\.info/lan.foo.net/g' {} \;

Was für Dateien/Dienste liegen unter /srv/? Dann kann ich den Befehl noch gezielter machen.

Dateiname suchen und Anzahl anzeigen

find / -type f -name "index.html"  | wc -l