Saya mencoba melakukan sesuatu seperti
ls -t | head -n 3 | xargs -I {} tar -cf t.tar {}
untuk mengarsipkan 3 file terakhir yang dimodifikasi tetapi akhirnya menjalankan perintah tar secara terpisah untuk masing-masing file dan pada akhirnya saya dibiarkan dengan satu file tar yang berisi 3 file terakhir (dalam urutan apa pun mereka). Saya tahu saya tidak menggunakan 'xargs' dengan benar tetapi pencarian tidak membantu; Saya menemukan contoh yang tidak berhasil juga. Bahkan perintah yang lebih sederhana
ls | xargs -I {} tar -cf t.tar {}
berakhir dengan file tar yang hanya berisi satu file di direktori itu.
-I
flag maka Anda harus menggunakan sesuatu selain{}
untuk replacestring. Misalnyals -t | head -n 3 | xargs -I foo tar -cf t.tar foo
-I
menyiratkan-L 1
yang secara efektif berarti menjalankan perintah berikut untuk setiap 1 baris input yang mengapa Anda melihat hasil Anda.Menurut posting ini , lebih baik menggunakan
r
daripadac
, jikaxargs
memotong input, menghasilkan file tar yang hanya berisi potongan terakhir. Jadi solusi yang lebih baik adalah:sumber