2010-10-10 11 views

Répondre

1

Quelque chose comme ceci:

for file in *.txt 
do 
    cp $file $file.tmp 
    cat $file.tmp | sed 's/foo/bar/g' > $file 
done 
+1

Vous pouvez utiliser '-i' pour éditer les fichiers en place, il n'y a donc pas besoin d'un fichier temporaire ni d'une boucle. – poke

1

Vous pouvez également utiliser perl:

perl -pi -e 's/find/replace/g' *.txt 
1

Juste bash

for file in *.txt 
do 
    while read -r line 
    do 
    case "$line" in 
     "*pattern*") line="${line//pattern/new}";; 
    esac 
    echo "$line" 
    done <"$file" > t 
    mv t "$file" 
done