HP-UX ***** B.11.23 U ia64 **** giấy phép người dùng không giới hạn
find . -type d -name *log* | xargs ls -la
cung cấp cho tôi tên thư mục (tên chứa logtrong tên thư mục) theo sau là tất cả các tệp trong thư mục đó.
Các thư mục /var/opt/SID/application_a/log/, /var/opt/SID/application_b/log/, /var/opt/SID/application_c/log/và vân vân chứa file log.
Tôi muốn chỉ có hai logfiles mới nhất được liệt kê bằng lslệnh, mà tôi thường tìm thấy bằng cách sử dụng ls -latr | tail -2.
Đầu ra phải là một cái gì đó như thế này ..
/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 -2không cho tôi kết quả trên. Những gì tôi nhận được là một danh sách hai tập tin find . -type d -name *log* | xargs ls -lalệnh cuối cùng
.
Vì vậy, tôi có thể lệnh ống sau một đường ống xargs? Làm thế nào khác để tôi truy vấn, để có được danh sách các tập tin kết quả ở định dạng trên?
find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10"
cung cấp cho tôi một danh sách mười tên thư mục bên trong thư mục hiện tại /var/opt/SIDvà đó không phải là điều tôi muốn.
sh -cmong đợi tên lệnh (tham số 0) là đối số thứ hai của nó, vì vậy bạn nên luôn luôn làm như vậy find . -type d -name *log* | xargs sh -c "ls -ltr | tail -10" lstail(chú ý lstailở cuối, sẽ phục vụ như $0đối với shell đã tạo). Nếu không, kết quả đầu tiên của bạn sẽ điền vào vai trò đó và không được sử dụng.
*log*nếu không vỏ sẽ mở rộng nó.