2012-03-26 17 views

risposta

8

si può fare come questo file di test

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

penso che sia l'ordinamento in base alle dimensioni del file, lo voglio da ordinare in base alla lunghezza del nome del file –

+0

dispiace. fammi trovare quello giusto e ripubblicare – Raghuram

+0

Aggiunto il nuovo codice ... controlla ora – Raghuram

2

marca:

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

lo script:

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

uscita:

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

Le prime due soluzioni funzionano bene. Grazie a tutti per la risposta. –

4

Il modo più semplice è:

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

La risposta di Raghuram di cui sopra non ha funzionato per me su FreeBSD in shell bash, ma questo lo ha fatto. Devo amore perl. Grazie. –

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