Làm cách nào để ls
sắp xếp theo loại tệp (ví dụ: thư mục trước rồi đến phần mở rộng tệp)? Các câu trả lời được đề xuất trong (Siêu người dùng) Thực hiện ls sắp xếp theo loại tệp dẫn đến lỗi tùy chọn không xác định từ ls
.
Làm cách nào để ls
sắp xếp theo loại tệp (ví dụ: thư mục trước rồi đến phần mở rộng tệp)? Các câu trả lời được đề xuất trong (Siêu người dùng) Thực hiện ls sắp xếp theo loại tệp dẫn đến lỗi tùy chọn không xác định từ ls
.
Câu trả lời:
Như bạn đã tìm ra, phiên bản ls
lệnh Darwin không hỗ trợ -X | --sort=extension
tùy chọn. Tùy chọn này là duy nhất cho phiên bản GNU của ls
.
Bạn có thể có được phiên bản GNU ls
cho hệ thống của bạn. Cách dễ nhất để làm điều này là thông qua trình quản lý gói và hệ thống porting của Homebrew . Với Homebrew được cài đặt, hãy làm:
brew install coreutils
để thêm gói GNU Core Utility vào hệ thống của bạn. Tất cả các tiện ích sẽ được thêm tiền tố g
để chúng không va chạm với các tiện ích mặc định của Darwin mà OS X mang theo.
Với các tiện ích GNU Core được cài đặt, bây giờ bạn có thể thực hiện:
gls -X
Và bạn sẽ thấy đầu ra được sắp xếp như bạn mong muốn.
Nếu bạn muốn sử dụng GNU Core Utils thay vì các tiện ích đi kèm với OS X, bạn có thể đặt dòng sau vào ~/.bashrc
tệp của mình :
source /usr/local/Cellar/coreutils/8.14/aliases
Và bạn sẽ không cần phải sử dụng g
tiền tố trên các lệnh nữa. Tôi sẽ nói rằng đây không phải là một điều hoàn toàn an toàn vì một số tiện ích GNU khác với các công cụ bash tích hợp và công cụ Darwin trong cách chúng hoạt động, đủ để chúng có thể làm hỏng những thứ khác trong phiên shell của bạn. Vì vậy, làm điều này một cách thận trọng.
Dựa trên câu trả lời trong bài viết Siêu người dùng được liên kết :
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Nếu bạn muốn xem toàn bộ đầu ra của ls -l
, chỉ cần bỏ qua cut
phần.
/bin/ls
.