2011-06-29 30 views
5

xem xét như sau:Tại sao xargs -L mang lại định dạng đúng, trong khi xargs -n thì không?

$ echo index.html* | xargs -L 1 ls -l 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:18 index.html 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:20 index.html.1 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:21 index.html.2 
-rw-r--r-- 1 zeki zeki 146589 2011-05-05 12:29 index.html.3 
$ echo index.html* | xargs -n 1 ls -l 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:18 index.html 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:20 index.html.1 
-rw-r--r-- 1 zeki zeki 17198 2011-05-03 23:21 index.html.2 
-rw-r--r-- 1 zeki zeki 146589 2011-05-05 12:29 index.html.3 

Tại sao lựa chọn -n mang lại một định dạng không chính xác? Chỉ trong trường hợp, tôi đang sử dụng bash dưới Ubuntu. Cảm ơn.

Trả lời

12

-L chia nhỏ theo dòng; echo không tách riêng đầu ra của nó theo dòng nhưng theo khoảng trắng, do đó, ls -l đơn lẻ chạy và định dạng tất cả các cột dưới dạng nhóm.

-n chia nhỏ theo thông số; trong trường hợp không có -L hoặc -0, dấu tách là khoảng trắng (có thể được sửa đổi bằng cách trích dẫn), vì vậy mỗi tên tệp sẽ tự động chạy ls -l và không có cách nào để chạy độc lập để phối hợp độ rộng cột.

+0

đánh bại tôi vào nó, 1. –

+0

Cảm ơn! Bây giờ nó rõ ràng. –

3

Các POSIX tiêu chuẩn mandates:

-Lsố

Tiện ích sẽ được thực hiện đối với từng không trống numberdòng các đối số từ đầu vào tiêu chuẩn. Lệnh gọi cuối cùng của tiện ích sẽ có ít dòng đối số nếu ít hơn số còn lại. Đường dây được coi là kết thúc bằng mã đầu tiên trừ khi ký tự cuối cùng của dòng là <blank>; dấu hiệu tiếp theo là <blank> tiếp tục với dòng không trống rỗng tiếp theo.

-nsố

tiện ích Gọi sử dụng nhiều đầu vào tiêu chuẩn luận càng tốt, lên đến số (một số thập phân số nguyên dương) đối số tối đa.

(Nhấn mạnh thêm.) Kể từ echo * tạo ra một dòng duy nhất, xargs -L 1 chỉ nguồn cấp dữ liệu tất cả các tên tập tin để ls cùng một lúc, và chỉ sau đó có thể ls độc đáo sắp xếp các cột.

(Nói cách khác, lệnh đầu tiên của bạn là tương đương ls -l index.html*, ngoại trừ việc nó không xử lý tên tập tin chứa khoảng trống một cách chính xác.)

+0

Cảm ơn bạn !! –

Các vấn đề liên quan