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 log
trong 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 ls
lệ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 -2
khô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 -la
lệ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/SID
và đó không phải là điều tôi muốn.
sh -c
mong đợ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ó.