Come faccio a sostituire AAA con BBB in tutti i files di testo su una cartella e le sue sottocartelle ?? sed?? grep ???
Come faccio a sostituire AAA con BBB in tutti i files di testo su una cartella e le sue sottocartelle ?? sed?? grep ???
<<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
-- Steven Chu
mi autorispondo..![]()
![]()
Ho trovato rpl (http://rpl.sf.net):
codice:rpl -R "AAA" "BBB" /fullPath/
<<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
-- Steven Chu
rename modifica i nomi dei files, ma a me serviva x i contenuti.. grazie della dritta.... mi è comunque utile...Originariamente inviato da weseven
rename
man rename
rename from to files
<<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
-- Steven Chu
con sed potevi anche, l'ho usato giusto ieri per fare la stessa cosa:
nel comando, s indica di sostituire, g indica globalmente (cioè non sostituisce solo il primo match per ogni riga, ma tutti i match per ogni riga).codice:sed -e 's/AAA/BBB/g' * -i".bak"
-i sta per "in place", cioè non stampa su stdout ma lavora sui files stessi, salvando le copie di backup aggiungendo .bak al nome.
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer
quindiOriginariamente inviato da GreyFox86
con sed potevi anche, l'ho usato giusto ieri per fare la stessa cosa:
nel comando, s indica di sostituire, g indica globalmente (cioè non sostituisce solo il primo match per ogni riga, ma tutti i match per ogni riga).codice:sed -e 's/AAA/BBB/g' * -i".bak"
-i sta per "in place", cioè non stampa su stdout ma lavora sui files stessi, salvando le copie di backup aggiungendo .bak al nome.
lo farebbe su tutti i files di una directory ?? E per tutte le sotto-directory???codice:sed -e 's/AAA/BBB/g' * -i".*"
<<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
-- Steven Chu
No così è sbagliato. ".bak" è opzionale, semplicemente se lo indichi ti crea un file di backup aggiungendo l'estensione che indichi prima di lavorare sui files. Il comando giusto per tutti i file della dir corrente, è quello del mio esempio.
Non mi risulta che abbia un'opzione per farlo ciclare ricorsivamente in tutte le sotto-directory, mi sa che per quello ci vuole qualcosa di più.
Qualcosa del genere dovrebbe funzionare:
edit: ma quanto mi piace bashcodice:find . -type f -exec sed -i".bak" -e "s/miao/bao/g" {} \;![]()
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer
grazias...
<<contro i gas serra, spero più nelle nuove tecnologie pulite che nelle conferenze internazionali>>
-- Steven Chu
figurati![]()
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer
Questa tua domanda mi ha fatto venire l'idea di scriverci sopra un articolo, penso e spero che possa essere utile a molti: http://greyfox.imente.org/index.php?id=74
![]()
GreyFox (Linux registered user #435102)
greyfox.imente.org - GreyFox's shots (photo gallery)
$ cd /pub
$ more beer