Arsip Tag: replace text

Tips Sederhana Cara Replace String Pada Banyak File Text Sekaligus di Linux- Bagian II

Lanjutan dari tips replace string di linux bagian seblumnya (ya iyyalah, masa’ bagian sesudahnya). Kali ini untuk kasus harus melakukan penelusuran dan penggantian sampai ke semua subfolder di dalamnya.

Sebagai pembuka saya ingin membatalkan anjuran untuk menggunakan RPL, soalnya gak tau kenapa kalau jumlah file yang diganti banyak selalu error dan pesan terakhir cuman killed, padahal sebelumnya di pencarian bertingkat yang filenya sedikit lancar-lancar aja (kemungkinan komputer Bair yang jangkrik :P).

Akhirnya harus mikir dan pakai gabungan sed dan find. Berikut command alakadarnya (yg penting berhasil :p) ;

find /lokasi/folder/induk/ -name *filter-nama-file* -type f -print0 | xargs -0 -n 1 sed -i -e ‘s/StringYangDiganti/StringPengganti/g’

Untuk memperjelas, kita coba contoh kasus: Misalnya kita harus me-replace semua file .php yang jumlahnya ribuan dan berada di dalam folder, subfolder-subfolder dan subsubfolder-subsubfolder web dengan lokasi /home/bair/test/web. String yang ingin  diganti adalah localhost/web/ menjadi  $hostname, maka di terminal tinggal jalankan perintah;

find /home/bair/test/web/ -name *.php* -type f -print0 | xargs -0 -n 1 sed -i -e ‘s/localhost\/web\//$hostname\//g’

Ya sudah tinggal tekan ENTER dan selesai :D.

Keterangan: untuk beberapa karakter yang ingin diganti semisal; baris baru (orang sering bilang enter :D), slash atau garis miring (/), dll, harus didahului dengan backslash (\).

Selamat mencoba.

THE END 😀

Iklan

Tips Sederhana Cara Replace String Pada Banyak File Text Sekaligus di Linux- Bagian I

Bair yakin semua sudah sangat terbiasa melakukan Replace ini, khususnya untuk yang hobi Copy Paste tugas dan laporan teman, cukup replace beberapa tulisan saja *terutama nama dan nomor mahasiswa*, maka taddaa.. sebuah tugas bisa terselesaikan heheh :p.

Tapi ada kalanya di beberapa pekerjaan kita harus melakukan “replace” string yang sama pada beberapa file sekaligus. Hmm.. pengalaman saya yang menggunakan Geany untuk melakukan coding sederhana semisal untuk web development, sangatlah dimudahkan dengan fasilitas Replace In Session yang ada di Geany.

Caranya sangat mudah, tinggal buka beberapa file web yang ingin ikut di replace, setelah itu masuk ke menu Search > Replace (atau bisa juga dengan Ctrl+H), isi form “Search For” dengan string yang ingin diganti  dan “Replace With” dengan string pengganti, kemudian pilih button “In Session”, maka semua file yang sedang dibuka di Geany akan ikut di-replace.

Jendela Replace di Geany

Jendela Replace di Geany

Akan tetapi untuk cara ini masih enak kalau filenya masih sedikit, nah.. kalau sudah puluhan bahkan ratusan file malas dan berat juga di komputer untuk buka semua file di Geany.

Tapi jangan khawatir dan jangan bersedih :D, Bair juga selalu mencari dan membagi cara paling efisien (baca cari gampangnya,  sama seperti cara melakukan resize gambar berjamaah pada posting sebelumnya), salah satunya adalah dengan memanfaatkan perintah sed di terminal (ya.. Anda tidak salah baca.. t-e-r-m-i-n-a-l.. gak usah senang gitu dong :D).

Misalnya jika dalam satu folder ada ratusan dan beragam jenis file, yang diantaranya adalah file-file .php yang ingin isinya ingin kita replace, dari “foter” menjadi “footer” untuk semua file .php tersebut, maka di terminal kita tinggal masukkan perintah

sed -i ‘s/foter/footer/g’ /folder/lokasi/*.php

Untuk lebih jelasnya coba lihat info sed, dengan man sed atau sed –help.

Tapi belum selesai, masalahnya perintah diatas itu hanya melakukan pencarian dan penggantian pada folder tersebut saja, tidak kedalam subfolder-subfoldernya.

Jika memang harus melakukan penelusurannya sampai ke semua subfolder didalamnya silahkan kombinasikan perintah sed tersebut dengan find (sepertinya sih, soalnya belum coba juga :D). Atau kalau Bair yang pemalas sih selama ini langsung saja download, instal dan gunakan RPL.

Tentang RPL, akan Bair lanjutkan di Bagian II, biar gak kepanjangan :), dan biar keren gitu, ada  TO BE CONTINUED-nya. Oh dan jangan khawatir, RPL juga pakai terminal kok :).

TO BE CONTINUED…