[Löst] bash: Hur söka och ersätta text i ett antal filer som är listade i en fil?

Permalänk
Medlem

[Löst] bash: Hur söka och ersätta text i ett antal filer som är listade i en fil?

Jag vill ersätta ett antal html färger i ett par svg-filer, scss-filer med mera. Jag har alla filerna som jag ska ändra på listade i filer.txt. Exempel:

../assets/glenn.svg ../scss/kålle.scss ../blabla/ada.rc

Det är ett 20-tal filer listade där, en på varje rad.

Hur kan jag använda till exempel sed, grep eller awk med mera för att ändra 000000 till 333333 i dessa filer?

Visa signatur
Permalänk
Medlem

snabbt haxx.

for file in `cat filter.txt`; do sed -i -e "s/000000/333333/g" $file; done

Permalänk
Legendarisk

@lassekongo83: Här är en annan variant du kanske kan jobba vidare från om du vill ersätta i många filer på en och samma gång. Den hittar alla filer med ändelserna rc, scss och svg i den aktuella mappen samt undermappar och kör sed på varje träff.

find . -type f -regex '^.+\.\(rc\|scss\|svg\)$' -print0 | xargs -0 -n1 sed -i 's/000000/333333/g'

Visa signatur

Abstractions all the way down.

Permalänk
Medlem

@rpha: Tackar. Gjorde precis vad jag ville.

Visa signatur