sed multiple files in terminal linux

Ada kasus di mana kita harus mengubah beberapa string dalam banyak file, tapi kita tidak punya banyak waktu. Bisa saja kita kerjakan satu per satu. Namun sebenarnya kalau kita paham caranya, hal tersebut dapat kita kerjakan hanya dalam waktu sekejap.

Nah, dalam hal ini, saya harus mengubah string ../../maxcdn.bootstrapcdn.com menjadi //maxcdn.bootstrapcdn.com dalam file html yang saya unduh. Di dalamnya, ada ribuan file yang harus saya ubah. Kalau saya mengeditnya satu persatu, mungkin satu Minggu belum akan selesai. Gugling sebentar, maka saya temukan cara praktisnya. Jadi begini :

ebook@server1:~/public_html/w3c$ grep -r -l "..\/..\/maxcdn.bootstrapcdn.com" . | xargs sed -i 's/..\/..\/maxcdn.bootstrapcdn.com/\/\/maxcdn.bootstrapcdn.com/g'
ebook@server1:~/public_html/w3c$ grep -r -l "..\/..\/ajax.googleapis.com" . | xargs sed -i 's/..\/..\/ajax.googleapis.com/\/\/ajax.googleapis.com/g'

Keterangan :

  • Perintah grep -r -l “..\/..\/maxcdn.bootstrapcdn.com” . untuk mencari file yang memiliki string tersebut
  • Kemudian perintah di sebelah kanan pipeline |, yaitu xargs sed -i 's/..\/..\/maxcdn.bootstrapcdn.com/\/\/maxcdn.bootstrapcdn.com/g' maksudnya adalah ganti semua string ../../maxcdn.bootstrapcdn.com dengan string //maxcdn.bootstrapcdn.com dalam file yang ditemukan oleh perintah sebelumnya.
  • Mudah, kan?

Ada yang bingung? Coba saja deh.

  • linux/sed.multiple.files.in.terminal.linux
  • Terakhir diubah: 9 bulan yang lalu
  • (Perubahan eksternal)