Contoh Penggunaan Perintah "xargs"

Deskripsi dan Pendahuluan

Perintah xargs biasanya digunakan dalam baris perintah di mana output dari satu perintah diteruskan sebagai argumen input ke perintah lain.

Dalam banyak kasus, tidak ada perintah khusus seperti xargs yang diperlukan untuk menyelesaikannya, karena operator "pipa" dan "redirection" melakukan transaksi jenis yang sama. Namun, terkadang ada masalah dengan mekanisme pemipaan dan pengalihan dasar, misalnya, jika argumen berisi spasi, bahwa xargs mengatasi.

Selain itu, xargs mengeksekusi perintah yang ditentukan berulang kali, jika perlu, untuk memproses semua argumen yang diberikan kepadanya. Bahkan, Anda dapat menentukan berapa banyak argumen yang harus dibaca dari aliran input standar setiap kali xargs mengeksekusi perintah yang ditentukan.

Secara umum, perintah xargs harus digunakan jika output dari satu perintah akan digunakan sebagai bagian dari opsi atau argumen dari perintah kedua yang datanya dialirkan (menggunakan operator pipa "|"). Pemipaan biasa cukup jika data dimaksudkan untuk menjadi input (standar) dari perintah kedua.

Sebagai contoh, jika Anda menggunakan perintah ls untuk menghasilkan daftar nama file dan direktori, dan kemudian menyalurkan daftar ini ke perintah xargs yang mengeksekusi echo , Anda dapat menentukan berapa banyak nama file atau nama direktori yang diproses oleh echo pada setiap iterasi sebagai berikut :

ls | xargs -n 5 echo

Dalam hal ini, echo menerima lima nama file atau direktori pada suatu waktu. Karena gema menambahkan karakter baris baru di bagian akhir, lima nama ditulis di setiap baris.

Jika Anda menjalankan perintah yang mengembalikan item angka besar dan tak terduga (misalnya nama file) yang diteruskan ke perintah lain untuk diproses lebih lanjut, adalah ide bagus untuk mengontrol jumlah argumen maksimum yang diterima oleh perintah kedua untuk menghindari kelebihan beban dan kerusakan.

Baris perintah berikut mempartisi aliran nama file yang dihasilkan oleh find int kelompok 200 sebelum diteruskan ke perintah cp , yang menyalinnya ke direktori cadangan .

temukan ./ -type f -name "* .txt" -print | xargs -l200 -i cp -f {} ./backup

Elemen "./" dalam perintah find menentukan direktori saat ini untuk pencarian. Argumen "-type f" membatasi pencarian ke file, dan tanda "-name" * .txt "akan menyaring lebih jauh apa pun yang tidak memiliki ekstensi" .txt ". Bendera -i di xargs memberi tanda bahwa { } notasi mewakili setiap nama file dari steam.

Perintah berikut menemukan file bernama inti di atau di bawah direktori / tmp dan menghapusnya.

temukan / tmp -name core -type f -print | xargs / bin / rm -f

Perhatikan bahwa ini akan bekerja dengan tidak benar jika ada nama file yang berisi baris baru, tanda kutip tunggal atau ganda, atau spasi. Versi berikut memproses nama file sedemikian rupa sehingga nama file atau direktori yang berisi tanda kutip tunggal atau ganda, spasi atau baris baru ditangani dengan benar.

temukan / tmp -name core -type f -print0 | xargs -0 / bin / rm -f

Alih-alih opsi -i Anda juga dapat menggunakan flag -I yang menentukan string yang diganti oleh baris input dalam argumen perintah seperti pada contoh ini:

ls dir1 | xargs -I {} -t mv dir1 / {} dir / {} / kode>

String pengganti didefinisikan sebagai "{}". Ini berarti, setiap kejadian "{}" dalam argumen perintah digantikan oleh elemen input yang diteruskan ke argumen melalui operasi pipa. Ini memungkinkan Anda untuk menempatkan elemen input pada posisi tertentu dalam argumen perintah yang akan (berulang kali) dieksekusi.