HP-UX ***** B.11.23 U ia64 **** lisensi pengguna tidak terbatas
find . -type d -name *log* | xargs ls -la
memberi saya nama direktori (yang berisi lognama direktori) diikuti oleh semua file dalam direktori itu.
Direktori /var/opt/SID/application_a/log/, /var/opt/SID/application_b/log/, /var/opt/SID/application_c/log/dan sebagainya berisi file-file log.
Saya ingin hanya dua file log terbaru yang didaftar oleh lsperintah, yang biasanya saya temukan menggunakan ls -latr | tail -2.
Outputnya harus seperti ini ..
/var/opt/SID/application_a/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_b/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
/var/opt/SID/application_c/log/
-rw-rw-rw- 1 user1 user1 59698 Jun 11 2013 log1
-rw-rw-rw- 1 user1 user1 59698 Jun 10 2013 log2
find . -type d -name *log* | xargs ls -la | tail -2tidak memberi saya hasil di atas. Yang saya dapatkan adalah daftar dua file
find . -type d -name *log* | xargs ls -laperintah terakhir.
Jadi bisakah saya memipakan perintah setelah dipipet xargs? Bagaimana lagi saya meminta, untuk mendapatkan daftar file yang dihasilkan dalam format di atas?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
memberi saya daftar nama direktori sepuluh di dalam direktori saat ini yang kebetulan /var/opt/SIDdan itu juga bukan yang saya inginkan.
sh -cmengharapkan nama perintah (parameter 0) sebagai argumen kedua, jadi Anda harus selalu melakukannya find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10" lstail(perhatikan lstailpada bagian akhir, yang akan berfungsi seperti $0untuk shell yang dibuat). Kalau tidak, hasil pertama Anda akan mengisi peran itu dan tidak digunakan.
*log*jika tidak, shell akan mengembangkannya.