xargs membaca item dari standart input yang dipisahkan oleh spasi atau newline (baris baru), bila tidak ada parameter yang diberikan xargs langsung menampilkan list data dari pipeline.
Contoh kasus
Untuk contoh kasus kita buat 10 file
mkdir contoh-xargs cd contoh-xargs for a in {1..10}; do echo "Angka urutan ke-$a" > $a.txt; done
script sederhana diatas kita akan membuat file 1-10.txt dengan isi Angka urutan ke-
1 sampai 10.
Contoh sederhana
Contoh sederhana penggunaan xargs
. ketik xargs di terminal anda, tekan enter lalu ketik text. akhiri dengan CTRL + D
xargs
contoh lainnya pipeline command lain ke xargs
contoh dengan pwd
pwd | xargs # output /home/tommy/contoh-xargs
contoh dengan ls
ls | xargs # output 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
Mencari string
contoh menggunakan bantuan find
dan grep
untuk pencarian string.
find . -name "*.txt" | xargs grep -e "Angka" # output ./7.txt:Angka urutan ke-7 ./1.txt:Angka urutan ke-1 ./9.txt:Angka urutan ke-9 ./5.txt:Angka urutan ke-5 ./10.txt:Angka urutan ke-10 ./4.txt:Angka urutan ke-4 ./8.txt:Angka urutan ke-8 ./6.txt:Angka urutan ke-6 ./2.txt:Angka urutan ke-2 ./3.txt:Angka urutan ke-3
Menghapus File
Perintah ini akan menghapus semua file dengan akhiran (ekstention) .txt
find . -name "*.txt" | xargs rm
Limit Baris
Default xargs menampilkan semua data dalam satu baris, tetapi output tersebut bisa diubah dengan parameter -n
> ls | xargs -n 1 # output 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
contoh lainnya
ls | xargs -n 2 # output 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
Tampilkan Perintah yang dijalankan
Untuk kebutuhan debugging kita perlu menampilkan perintah apa yang dijalankan oleh script
ls | xargs -t rm # output rm 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt
rm 10.txt ...
adalah perintah yang dijalankan si xargs
, begitu output tersebut ditampilkan langsung di eksekusi.
Konfirmasi
Agar xargs meminta respond dari user Yes / No, sebelum mengeksekusi perintah tambahkan -p
. contoh
ls | xargs -p rm rm 10.txt 1.txt 2.txt 3.txt 4.txt 5.txt 6.txt 7.txt 8.txt 9.txt ?...n # output
karena saya memilih n (NO), maka tidak jadi dieksekusi perintah rm.