GNU/Linux >> Znalost Linux >  >> Linux

Jak nahradit všechny výskyty slova ve všech souborech v příkazovém řádku Linuxu

Otázka :Jak nahradím všechny výskyty slova ve všech souborech v dané složce?

Zvažte problémový scénář, kdy máte web, na kterém často odkazujete na aktuální rok. Každý rok je potřeba rok aktualizovat. Můžete snadno najít všechny výskyty ve všech souborech, ale neměli byste se ručně měnit rok po jednom v každém souboru.

Řešení

Tak co děláš? Jedním z několika způsobů, jak najít všechny výskyty a poté nahradit hledaný výraz, je použití kombinace příkazů find a sed.

Můžete to snadno udělat jediným příkazem:V tomto příkladu máte ve složce pages 50 webových stránek. Tento příkaz okamžitě změní všechny výskyty „2017“ na „2018“:

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

Aby byl výše uvedený příklad trochu obecnější, musíte udělat toto:

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

Ve výše uvedeném příkazu nahraďte , a skutečnými daty.

Vysvětlení

To, co děláte, je, že používáte příkaz find k získání všech souborů v aktuálních adresářích a jejich podadresářích. Volba -type f zajišťuje, že získáte pouze soubory, nikoli adresáře.

A pak předáte výsledek pomocí příkazu exec příkazu sed. Příkaz sed vyhledá text a nahradí jej.

The {} \; je součástí příkazu exec. Mezera mezi } a \ je povinná.

Tento rychlý tip pro Linux navrhl Čtečka příruček pro Linux, Jane Hadley. Máte lepší řešení tohoto problému? Podělte se o to v komentářích.


Linux
  1. Jak používat Linuxový příkaz find k hledání souborů

  2. Příkaz Linux:Jak „najít“ pouze textové soubory?

  3. Jak najít všechny soubory končící na .rb s Linuxem?

  1. Jak změnit všechny výskyty slova ve všech souborech v adresáři

  2. Jak nahradit soubor v jar příkazovým řádkem v linuxu?

  3. Jak vypsat všechny soubory oddílu na linuxu?

  1. Hledání souborů v příkazovém řádku (jak na to)

  2. 5 nástrojů příkazového řádku pro rychlé vyhledání souborů v systému Linux

  3. Jak přejmenovat soubory v Linuxu