2012-03-26 49 views

Trả lời

8

Bạn có thể làm như

for i in `ls`; do LEN=`expr length $i`; echo $LEN $i; done | sort -n 
+0

Tôi nghĩ rằng nó được phân loại dựa trên kích thước tập tin, tôi muốn nó được sắp xếp dựa vào độ dài của tên tập tin –

+0

xin lỗi về điều đó. hãy để tôi lấy đúng và repost – Raghuram

+0

Nhập mã mới ... kiểm tra ngay – Raghuram

2

này làm cho các tập tin thử nghiệm:

mkdir -p test; cd test 
touch short-file-name medium-file-name loooong-file-name 

kịch bản:

ls |awk '{print length($0)"\t"$0}' |sort -n |cut --complement -f1 

đầu ra:

short-file-name 
medium-file-name 
loooong-file-name 
+0

Hai giải pháp đầu tiên hoạt động tốt. Cảm ơn tất cả vì phản hồi. –

4

Cách đơn giản chỉ là:

$ ls | perl -e 'print sort { length($b) <=> length($a) } <>' 
+0

Câu trả lời của Raghuram ở trên đã không làm việc cho tôi trên FreeBSD trong bash shell, nhưng điều này đã làm. Gotta yêu perl. Cảm ơn. –

0
for i in *; do printf "%d\t%s\n" "${#i}" "$i"; done | sort -n | cut -f2- 
Các vấn đề liên quan