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