2012-03-26 9 views

Respuesta

8

usted puede hacer como este archivos de prueba

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

Creo que es la clasificación basada en el tamaño del archivo, yo quiero que se ordena en función de la longitud del nombre del archivo –

+0

lo siento por eso. permítame obtener el correcto y volver a publicar – Raghuram

+0

Agregó el nuevo código ... consulte ahora – Raghuram

2

Marca:

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

el guión:

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

de salida:

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

Las primeras dos soluciones funcionan bien. Gracias a todos por la respuesta. –

4

La forma más sencilla es:

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

La respuesta anterior de Raghuram no funcionó para mí en FreeBSD en bash shell, pero esta sí. Tengo que amar a Perl. Gracias. –

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