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 log
nama 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 ls
perintah, 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 -2
tidak memberi saya hasil di atas. Yang saya dapatkan adalah daftar dua file
find . -type d -name *log* | xargs ls -la
perintah 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/SID
dan itu juga bukan yang saya inginkan.
sh -c
mengharapkan 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 lstail
pada bagian akhir, yang akan berfungsi seperti $0
untuk shell yang dibuat). Kalau tidak, hasil pertama Anda akan mengisi peran itu dan tidak digunakan.
*log*
jika tidak, shell akan mengembangkannya.