GNU/Linux >> Linux Esercitazione >  >> Linux

Come sostituire tutte le occorrenze di una parola in tutti i file nella riga di comando di Linux

Domanda :come faccio a sostituire tutte le occorrenze di una parola in tutti i file nella cartella specificata?

Considera uno scenario problematico in cui hai un sito Web in cui fai spesso riferimento all'anno in corso. Ogni anno è necessario aggiornare l'anno. Puoi trovare facilmente tutte le occorrenze in tutti i file, ma dovresti evitare di modificare manualmente l'anno, uno per uno, in ogni file.

Soluzione

Allora cosa fai? Uno dei vari modi per trovare tutte le occorrenze e quindi sostituire il termine cercato consiste nell'usare una combinazione di comandi find e sed.

Puoi farlo facilmente con un solo comando:in questo esempio, hai 50 pagine web nella cartella delle pagine. Questo comando cambierà istantaneamente tutte le occorrenze di "2017" in "2018":

find ~/public_html/my_website/pages -type f -exec sed -i 's/2017/2018/g' {} \;

Per rendere l'esempio sopra un po' più generico, ecco cosa devi fare:

find <path_to_directory> -type f -exec sed -i 's/<search_text>/<replace_text>/g' {} \;

Nel comando precedente, sostituisci , e con i dati effettivi.

Spiegazione

Quello che stai facendo qui è che stai usando il comando find per ottenere tutti i file nelle directory correnti e nelle sue sottodirectory. L'opzione -type f assicura di ottenere solo i file, non le directory.

E poi passi il risultato usando il comando exec al comando sed. Il comando sed cerca il testo e lo sostituisce.

Il {} \; fa parte del comando exec. Lo spazio tra } e \ è obbligatorio.

Questo suggerimento rapido per Linux è stato suggerito da Lettore del manuale Linux, Jane Hadley. Hai una soluzione migliore per questo problema? Condividilo nei commenti.


Linux
  1. Trovare file nella riga di comando (come fare per)

  2. 5 strumenti da riga di comando per trovare rapidamente file in Linux

  3. Come trovare file con il comando fd in Linux

  4. Come sostituire una stringa in più file nella riga di comando di Linux

  5. Come sostituire un file in jar con la riga di comando in Linux?

Come trovare file in Linux

Come trovare file in Linux con il comando Trova

Come cercare file dalla riga di comando di Linux

Come trovare file con il comando fd in Linux

Come trovare l'indirizzo IP nella riga di comando di Linux

Come trovare le cartelle in Linux