it-swarm.com.de

Suchen und Ersetzen mit sed in Verzeichnissen und Unterverzeichnissen

Ich führe diesen Befehl aus, um alle Vorkommen von "Apple" durch "Orange" in allen Dateien im Stammverzeichnis meiner Website zu suchen und zu ersetzen:

find ./ -exec sed -i 's/Apple/orange/g' {} \;

Es werden jedoch keine Unterverzeichnisse durchsucht.

Was ist los mit diesem Befehl?

Hier sind einige Ausgabezeilen von find ./:

./index.php
./header.php
./fpd
./fpd/font
./fpd/font/desktop.ini
./fpd/font/courier.php
./fpd/font/symbol.php
214
hd.

Ihr Fund sollte so aussehen, um zu vermeiden, dass Verzeichnisnamen an sed gesendet werden:

find ./ -type f -exec sed -i -e 's/Apple/orange/g' {} \;
369
jfg956

Für größere s & r-Aufgaben ist es besser und schneller, grep und xargs zu verwenden.

grep -rl 'apples' /dir_to_search_under | xargs sed -i 's/apples/oranges/g'
73
Julius

Das hat bei mir funktioniert:

find ./ -type f -exec sed -i '' 's#NEEDLE#REPLACEMENT#' *.php {} \;
4
blackdad
grep -e Apple your_site_root/**/*.* -s -l | xargs sed -i "" "s|Apple|orage|"
2
rocLv

Ich denke, wir können dies mit einem einfachen einzeiligen Befehl tun

for i in `grep -rl eth0 . 2> /dev/null`; do sed -i ‘s/eth0/eth1/’ $i; done

Siehe hierzu Seite .

0
Sukrant