2012-03-26 2 views

ответ

8

Вы можете сделать как это

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

Я думаю, что это сортировка в зависимости от размера файла, я хочу, чтобы быть отсортирован на основании длины файла –

+0

сожалеем об этом. позвольте мне получить правильный и repost – Raghuram

+0

Добавлен новый код ... проверить сейчас – Raghuram

2

сделать тестовые файлы:

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

сценарий:

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

выход:

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

Первые два решения работают отлично. Спасибо всем за ответ. –

4

Самый простой способ это просто:

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

Ответ Raghuram выше не работал для меня на FreeBSD в оболочке bash, но это было сделано. Должен любить перл. Благодарю. –

0
for i in *; do printf "%d\t%s\n" "${#i}" "$i"; done | sort -n | cut -f2-