Làm thế nào để sắp xếp đầu ra của `ls`?


14

Có thể xem kết quả đầu ra này được sắp xếp với titlepage_1.pdf trước titlepage_19.pdf không?

$ ls
allTitlepage.pdf         titlepage_12.pdf  titlepage_19.tex  titlepage_26.pdf  titlepage_32.tex  titlepage_4.tex
allTitlepage.tex         titlepage_12.tex  titlepage_1.pdf   titlepage_26.tex  titlepage_33.pdf  titlepage_5.pdf
assignment.pdf           titlepage_13.pdf  titlepage_1.tex   titlepage_27.pdf  titlepage_34.pdf  titlepage_5.tex
assignment.tex           titlepage_13.tex  titlepage_20.pdf  titlepage_27.tex  titlepage_34.tex  titlepage_6.pdf
graphicsAssignment2.pdf  titlepage_14.pdf  titlepage_20.tex  titlepage_28.pdf  titlepage_35.pdf  titlepage_6.tex
graphicsAssignment2.tex  titlepage_14.tex  titlepage_21.pdf  titlepage_28.tex  titlepage_35.tex  titlepage_7.pdf
README.md                titlepage_15.pdf  titlepage_21.tex  titlepage_29.pdf  titlepage_36.pdf  titlepage_7.tex
thesisTitlepage.pdf      titlepage_15.tex  titlepage_22.pdf  titlepage_29.tex  titlepage_36.tex  titlepage_8.pdf
thesisTitlepage.tex      titlepage_16.pdf  titlepage_22.tex  titlepage_2.pdf   titlepage_37.pdf  titlepage_8.tex
titlepage_0.pdf          titlepage_16.tex  titlepage_23.pdf  titlepage_2.tex   titlepage_37.tex  titlepage_9.pdf
titlepage_0.tex          titlepage_17.pdf  titlepage_23.tex  titlepage_30.pdf  titlepage_38.pdf  titlepage_9.tex
titlepage_10.pdf         titlepage_17.tex  titlepage_24.pdf  titlepage_30.tex  titlepage_38.tex  titlepage_one.pdf
titlepage_10.tex         titlepage_18.pdf  titlepage_24.tex  titlepage_31.pdf  titlepage_3.pdf   titlepage_one.tex
titlepage_11.pdf         titlepage_18.tex  titlepage_25.pdf  titlepage_31.tex  titlepage_3.tex   titlepage_two.tex
titlepage_11.tex         titlepage_19.pdf  titlepage_25.tex  titlepage_32.pdf  titlepage_4.pdf

3
Tiêu đề nên được cụ thể hơn vì nó trông giống như một bản sao (mà nó có thể là dù sao).
Peter Mortensen

Câu trả lời:


31

Sử dụng khóa -v [sắp xếp tự nhiên của số (phiên bản) trong văn bản]

ls -v

Nếu bạn muốn một cột duy nhất, hãy sử dụng ls -1v
Vijay

13

Đầu ra được sắp xếp. Theo lstrang hướng dẫn:

Sắp xếp các mục theo thứ tự abc nếu không có -cftuvSUX hay --sort nào được chỉ định.

Nhưng nếu bạn muốn đi xa hơn, bạn có ít nhất hai lựa chọn:

Tùy chọn 1 - lssắp xếp công tắc

man lscho bạn biết về một số công tắc bạn có thể sử dụng để sắp xếp, cụ thể, trang ls man nói:

không (-U), kích thước (-S), thời gian (-t), phiên bản (-v), tiện ích mở rộng (-X)

Trong trường hợp của bạn, bạn muốn sắp xếp "phiên bản" (-v). Tuy nhiên, hãy cẩn thận, vì điều này cũng sẽ sắp xếp bất cứ thứ gì có sự blahblah-X.Y.Z-Asắp xếp có thể không hoàn toàn là những gì bạn muốn. Xem thêm giải thích về loại sắp xếp của GNU .

Tùy chọn 2 - Đường ống để sắp xếp các lệnh

Bạn có thể sử dụng một đường ống |để gửi đầu ra cho một lệnh khác, ví dụ lệnh sort mà bạn có thể sử dụng để sắp xếp theo một số cách khác, như ls -1 | sort -nlà hữu ích nếu bạn có các tệp được đánh số. Các-1 tắc đảm bảo rằng đầu ra là một dòng trên mỗi tệp.

Tương tự, bạn có thể thao tác đầu ra để hỗ trợ sắp xếp bằng cách sử dụng những thứ như sedhoặcawk .

Có rất nhiều cách để trả lời loại câu hỏi * này. Bạn có thể tìm thấy một hướng dẫn shell linux hữu ích.

* (Xem những gì tôi đã làm ở đó? :-P)


6

Như đã chỉ ra trong một chú thích, đầu ra đã được sắp xếp, nhưng bởi nhân vật, chứ không phải con số. Bạn có thể muốn dẫn đầu ra lsthông qua sortđó có một công tắc để sắp xếp theo số trong chuỗi:

ls | sort --version-sort

Từ trang hướng dẫn :

-V, --version-sort
         natural sort of (version) numbers within text

Nhược điểm: Khi chúng tôi phát hành lsthì nó xuất ra các tệp trong một bảng có càng nhiều cột phù hợp trên màn hình hiện tại (giống như bạn đã thể hiện trong bài đăng của mình). Nhưng khi lsthông báo rằng đầu ra của nó được chuyển hướng đến một tệp hoặc tới một đường ống (như trong ls | sort), sau đó lsin các tệp chỉ trong một cột vì sau đó giả sử đầu ra sẽ được xử lý theo từng dòng (còn gọi là tệp theo tệp) bởi một số chương trình khác (như sort). Vì vậy, đầu ra của ls | sort -Vsẽ ở trong một cột thay vì trong một bảng có nhiều cột. Xem câu trả lời đơn giản nhưng hoàn hảo của @vijay để biết cách tránh điều đó.


1
Bạn cũng có thể dẫn đầu ra tớicolumn
David Conrad

0

ls -l : liệt kê các tệp của thư mục theo chiều dọc nhưng không theo thứ tự cụ thể.

ls -l | sort -k 3: -k 3sẽ sắp xếp đầu ra của lệnh trước theo cột thứ 3.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.