Bạn có thể sắp xếp một danh sách ls theo tên?
Bạn có thể sắp xếp một danh sách ls theo tên?
Câu trả lời:
Ls của tôi sắp xếp theo tên theo mặc định. Bạn đang nhìn cái gì vậy?
man ls
Những trạng thái:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
ls
không sắp xếp nếu -c1
được chỉ định: có cách nào để làm điều đó không? ( --sort=name
dường như không hoạt động)
ls -la
, tôi thấy : .bashrc - can - .config - Downloads - .local - tmp
, sắp xếp tên sẽ là:.bashrc - .config - .local - Downloads - can - tmp
Đối với một cái gì đó đơn giản, bạn có thể kết hợp ls với sort . Đối với chỉ một danh sách các tên tệp:
ls -1 | sắp xếp
Để sắp xếp chúng theo thứ tự ngược lại:
ls -1 | sắp xếp -r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2,10,15; 2.10.2; 2,10,20; 2,10,21; 2.1.1; 2.1.10; 2.1,15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11,0,21; 11,0,22; Như bạn có thể thấy 2.10.15 trước 2.10.2 .
ls -1r
.
ls
từ việc coreutils
thực hiện sắp xếp nhận biết miền địa phương theo mặc định và do đó có thể tạo ra kết quả đáng ngạc nhiên trong một số trường hợp (ví dụ: %foo
sẽ sắp xếp giữa bar
và quux
trong LANG=en_US
). Nếu bạn muốn sắp xếp ASCIIbatics, hãy sử dụng
LANG=C ls
LANG
ilfnuence các hành vi sắp xếp, bài này giúp tôi rất nhiều!
?
cho mọi ký tự không phải ascii khi đầu ra là một thiết bị đầu cuối (tính năng xấu từ ls kiểm tra xem nó có xuất ra một thiết bị đầu cuối không, hoạt động khi đường ống). Bạn có thể "sửa" điều này bằng đường ống thành mèo, sử dụng C.UTF-8
ngôn ngữ (nếu hệ thống của bạn hỗ trợ) và / hoặc sử dụng -b
cờ. Thậm chí tốt hơn, không sử dụng ls
chút nào, sử dụng tốt hơn `
ls
sắp xếp các dấu gạch nối trước khi dấu gạch ngang.
Vẻ đẹp của các công cụ * nix là bạn có thể kết hợp chúng:
ls -l | sort -k9,9
Đầu ra của ls -l
sẽ trông như thế này
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Vì vậy, với 9,9
bạn sắp xếp cột 9
lên đến cột 9
, là tên tệp. Bạn phải cung cấp nơi dừng lại, đó là cùng một cột trong trường hợp này. Các cột bắt đầu với 1
.
Ngoài ra, nếu bạn muốn bỏ qua chữ hoa / thường, hãy thêm --ignore-case
vào lệnh sort.
-k9,9
nghĩa là gì?
9
lên đến cùng một cột 9
. Một ls
đầu ra bình thường trông như thế này : drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
, vì vậy cột 9 là tên tệp. Nếu bạn muốn bỏ qua các trường hợp, sử dụng --ignore-case
trên sắp xếp.
THÔNG BÁO: "a" đến SAU "Z":
$ chạm A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
giải pháp ở đây.
Các tệp chỉ khác nhau bởi một chuỗi số có thể được sắp xếp trên số này với điều kiện nó được phân tách trước dấu phân cách.
Trong trường hợp này, cú pháp sau có thể được sử dụng:
ls -x1 file | sort -t'<char>' -n -k2
Thí dụ:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
Từ trang man (cho bash ls):
Sắp xếp các mục theo thứ tự bảng chữ cái nếu không có -cftuSUX cũng như --sort.
which ls
sẽ thành công ngay cả khi bash có ls dựng sẵn. Thay vào đó, làm builtin ls
trong bash, và nhận được một lỗi.
which
luôn trả về một đường dẫn. Sử dụng type ls
để xác định shell nghĩ gì ls
(tích hợp, chức năng, thực thi).
Các ls
tiện ích nên phù hợp với IEEE Std 1.003,1-2001 ( POSIX.1
) trong đó nêu:
22027: nó sẽ sắp xếp các toán hạng thư mục và phi thư mục riêng biệt theo trình tự đối chiếu trong miền địa phương hiện tại.
26027: Theo mặc định, định dạng không xác định, nhưng đầu ra sẽ được sắp xếp theo thứ tự abc theo tên biểu tượng:
- Tên thư viện hoặc đối tượng, nếu A được chỉ định
- Tên biểu tượng
- Loại biểu tượng
- Giá trị của biểu tượng
- Kích thước được liên kết với biểu tượng, nếu có
Kiểm tra .bashrc
tập tin của bạn cho bí danh.
alias
để kiểm tra tất cả các bí danh hiện tại.
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --