Pertanyaan :Bagaimana cara mengganti semua kemunculan kata di semua file di folder yang diberikan?
Pertimbangkan skenario masalah di mana Anda memiliki situs web di mana Anda sering merujuk ke tahun berjalan. Setiap tahun Anda perlu memperbarui tahun. Anda dapat dengan mudah menemukan semua kemunculan di semua file tetapi mengubah tahun secara manual, satu per satu, di setiap file harus dihindari.
Solusi
Jadi apa yang kamu lakukan? Salah satu dari beberapa cara untuk menemukan semua kemunculan dan kemudian mengganti istilah yang dicari adalah dengan menggunakan kombinasi perintah find dan sed.
Anda dapat dengan mudah melakukannya dengan satu perintah:Dalam contoh ini, Anda memiliki 50 halaman web di folder halaman. Perintah ini akan langsung mengubah semua kemunculan "2017" menjadi "2018":
find ~/public_html/my_website/pages -type f -exec sed -i 's/2017/2018/g' {} \;
Untuk membuat contoh di atas sedikit lebih umum, inilah yang perlu Anda lakukan:
find <path_to_directory> -type f -exec sed -i 's/<search_text>/<replace_text>/g' {} \;
Pada perintah di atas, ganti
Penjelasan
Apa yang Anda lakukan di sini adalah bahwa Anda menggunakan perintah find untuk mendapatkan semua file di direktori saat ini dan sub-direktori. Opsi -type f memastikan bahwa Anda hanya mendapatkan file, bukan direktori.
Dan kemudian Anda meneruskan hasilnya menggunakan perintah exec ke perintah sed. Perintah sed mencari teks dan menggantinya.
{} \; adalah bagian dari perintah exec. Spasi antara } dan \ adalah wajib.
Kiat cepat Linux ini disarankan oleh Pembaca Buku Pegangan Linux, Jane Hadley. Punya solusi yang lebih baik untuk masalah ini? Bagikan di komentar.