Trova e sostituisci con grep e perl

4

Mi piacerebbe grep e sostituire il testo specifico in file di testo all'interno di una directory e di tutti i sottodirectory. Provo il seguente:

ls -R | egrep '.*\.txt' | perl -i -p -e 's/one.a/two.a/g'

Anche se grep sputa un elenco e questo viene eseguito, non riesco a ottenere che perl scriva effettivamente i file. Se possibile, sono interessato a imparare come farlo senza l'uso di find .

Qualcuno può individuare dove sto andando male?

Grazie, jml

    
posta jml 08.02.2014 - 06:34
fonte

1 risposta

2

Ci sono due problemi minori: in primo luogo, per reindirizzare i nomi dei file su un perl one-liner in questo modo, è necessario utilizzare xargs .

In secondo luogo, dovrai passare il percorso completo al perl one-liner, perché potrebbe trovarsi in una sottodirectory, quindi sarebbe meglio usare find .

Ecco un comando di lavoro:

find . -name "*.txt" | xargs perl -i -p -e 's/one.a/two.a/g'
    
risposta data 08.02.2014 - 07:41
fonte

Leggi altre domande sui tag