Menggunakan Perintah find, xargs, sed dan grep Untuk Efektifitas Find and Replace

Salah satu perintah dasar UNIX yang digunakan juga di Linux, adalah sed. Fungsi sed, sangat membantu dalam proses operasional server Linux. Perintah ini bersama dengan grep, tail, xargs dan lain sebagainya, adalah perintah-perintah dasar yang persamaan fungsinya tidak dapat ditemui di sistem operasi Windows, kecuali install dari luar. Sed, paling sering saya lakukan saat saya perlu melakukan pencarian file yang memiliki karakter tertentu. Saya gunakan juga sed untuk sekaligus melakukan pengubahan pada text tersebut (Find Replace).

Misal dalam sebuah direktori /var/www/sisinfo/, ternyata terdapat kebutuhan untuk mengubah kata “pdf” menjadi “ppdf”, sementara di dalam direktori tersebut terdapat 10.000 file, sedang kita tidak faham ada berapa banyak file yang mengandung kata tersebut yang perlu diganti. Kita juga tidak faham letak file yang mengandung kata tersebut.

Untuk sekedar mencari file biasanya saya hanya melakukan perintah find seperti :

find -type f -name '*.php'

Lakukan pencarian itu pada direktori kerja yang dimaksud. Jika tidak pada direktori kerja yang dimaksud, sebutkan juga path direktori tersebut pada setelah find, seperti

find /var/www/sisinfo -type f -name '*.php'

Nukilan hasilnya akan sebagai berikut:

./barcode/fpdf/font/symbol.php
./barcode/fpdf/font/helveticabi.php
./barcode/fpdf/font/times.php
./barcode/fpdf/font/makefont/makefont.php
./barcode/fpdf/font/zapfdingbats.php
./barcode/fpdf/font/timesb.php
./barcode/fpdf/font/timesi.php
./barcode/fpdf/font/helveticab.php
./barcode/fpdf/font/helveticai.php
./barcode/fpdf/font/timesbi.php
./barcode/fpdf/font/helvetica.php
./barcode/fpdf/font/courier.php
./barcode/fpdf/fpdf.php
./barcode/fpdf/tutorial/makefont.php
./barcode/fpdf/tutorial/tuto1.php
./barcode/fpdf/tutorial/tuto2.php
./barcode/fpdf/tutorial/tuto3.php
./barcode/fpdf/tutorial/tuto4.php
./barcode/fpdf/tutorial/tuto5.php
./barcode/fpdf/tutorial/tuto6.php
./barcode/fpdf/tutorial/tuto7.php
./barcode/fpdf/tutorial/calligra.php

Saya pun juga ingin melakukan pencarian file yang berekstensi php yang di dalamnya mengandung kata pdf.

find -type f -name '*.php' | xargs grep pdf

Xargs bergungsi untuk mengambil keluaran dari sisi kiri, yang akan dilanjutkan dengan perintah setelah xargs, dimana grep berfungsi mencari kata ‘pdf’ yang ada di dalam file yang ditemukan oleh find. Nukilan hasilnya adalah:

./barcode/ex.php:$pdf=new PDF_EAN13();
./barcode/ex.php:$pdf->AddPage();
./barcode/ex.php:$pdf->EAN13(10,10,'123456789012');
./barcode/ex.php:$pdf->Output();
./barcode/index.php:define('FPDF_FONTPATH','fpdf/font/');
./barcode/index.php:   $pdf=new PDF_Code128();
./barcode/index.php:   $pdf->AddPage();
./barcode/index.php:   $pdf->SetFont('Arial','',10);
./barcode/index.php:         $pdf->Code128( ( ($i - 1 ) * 45 ) + 10 , ( ( $z - 1 ) * 30 ) + 20 , $code , 40 , 10 );
./barcode/index.php:         $pdf->SetXY( ( ($i -1 ) * 45 ) + 13 , ( ( $z - 1 ) * 30 ) + 30 );
./barcode/index.php:         $pdf->Write( 5 , $code );
./barcode/index.php:   $pdf->Output();
./barcode/script128.php:require('fpdf/fpdf.php');
./barcode/barcode.php:      define('FPDF_FONTPATH','fpdf/font/');
./barcode/barcode.php:      require "fpdf/fpdf.php";
./barcode/barcode.php:      $pdf=new PDF_EAN13();
./barcode/barcode.php:      $pdf->AddPage();
./barcode/barcode.php://      $pdf->EAN13(10,10,'123456789012');
./barcode/barcode.php:               $pdf->EAN13( 40*( $i-1 )+5, 25*( $z ) , $nip );
./barcode/barcode.php:    $pdf->Output();

Sedangkan jika target kita mengubah kata pdf menjadi kata ppdf maka akan dilakukan seperti ini:

find -type f -name '*.php' | xargs sed -i 's/pdf/ppdf/g'

Perintah ini tidak akan menghasilkan keluaran. Tapi kita bisa melakukan pengecekan, dengan

find -type f -name '*.php' | xargs grep ppdf

Nukilan hasilnya akan seperti berikut :

./barcode/barcodebak.php:      $ppdf->Output();
./barcode/ex.php:$ppdf=new PDF_EAN13();
./barcode/ex.php:$ppdf->AddPage();
./barcode/ex.php:$ppdf->EAN13(10,10,'123456789012');
./barcode/ex.php:$ppdf->Output();
./barcode/index.php:define('FPDF_FONTPATH','fppdf/font/');
./barcode/index.php:   $ppdf=new PDF_Code128();
./barcode/index.php:   $ppdf->AddPage();
./barcode/index.php:   $ppdf->SetFont('Arial','',10);
./barcode/index.php:         $ppdf->Code128( ( ($i - 1 ) * 45 ) + 10 , ( ( $z - 1 ) * 30 ) + 20 , $code , 40 , 10 );
./barcode/index.php:         $ppdf->SetXY( ( ($i -1 ) * 45 ) + 13 , ( ( $z - 1 ) * 30 ) + 30 );
./barcode/index.php:         $ppdf->Write( 5 , $code );

Selamat mencoba, jangan lupa, jika ini adalah percobaan pertama anda dan tidak memiliki backup, jangan lakukan pada komputer produksi, dan buatlah backup 🙂

Selamat mencoba

Note : tulisan ini salah satu request dari salah satu saudara maya saya, pembaca dari Surabaya

2 thoughts on “Menggunakan Perintah find, xargs, sed dan grep Untuk Efektifitas Find and Replace

Leave a Reply to Mantab Wap Cancel reply

Your email address will not be published. Required fields are marked *