Promjena stringa u mnogo datoteka odjednom

11.12.2012.

Danas donosimo vrlo kratki tutorial, koji pokazuje kako možete promijeniti postojeći string u novi, automatski u svim datotekama unutar direktorija, odjednom. Za to ćemo koristiti jednostavnu bash skriptu, a posao će odraditi sed.

Recimo da imate velik broj html datoteka, ili bilo koje druge ekstenzije, unutar direktorija. U datotekama se nalazi string “primjer_1″. Pritom nije bitno nalazi li se taj string u svim datotekama ili samo nekima, te na koliko mjesta ni gdje se nalazi unutar datoteke. Vi želite u svakoj datoteci gdje se nalazi string “primjer_1″, promijeniti ga u novi string, recimo u “primjer_2″.

Skripta kojom to možete uraditi može izgledati ovako:

#!/bin/bash

OLD="primjer_1"
NEW="primjer_2"

mkdir modified

for file in *.html; do
sed "s|$OLD|$NEW|g" "$file" > modified/$file
done

Skriptu jednostavno spremite u .sh datoteku unutar direktorija gdje se nalaze datoteke koje želite editirati. Zatim skriptu pokrenite iz shell prompta. Nove datoteke nalazit će se u direktoriju “modified”. Prije pokretanja skripte, za svaki slučaj, napravite backup cijelog direktorija gdje ju startate.