Domanda
Si può ordinare un ls elenco per nome?
Soluzione
I miei ls sorta al nome di default. Cosa vedi?
stati man ls
:
List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.
:
Altri suggerimenti
Per qualcosa di semplice, è possibile combinare ls con sort . Per un elenco di nomi di file:
ls -1 | sort
Per ordinarli in ordine inverso:
ls -1 | sorta -r
ls
da coreutils
esegue un locale-consapevole mostra per impostazione predefinita, e quindi possono produrre risultati sorprendenti in alcuni casi (ad esempio, %foo
ordinerà tra bar
e quux
in LANG=en_US
). Se si desidera un ASCIIbetico sorta, utilizzare
LANG=C ls
La bellezza di *nix strumenti che si possono combinare:
ls -l | sort -k9,9
L'output di ls -l
sarà simile a questa
-rw-rw-r-- 1 luckydonald luckydonald 532 Feb 21 2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt
Quindi, con 9,9
si ordina colonna 9
fino alla colonna 9
, essendo i nomi dei file.È necessario fornire dove fermarsi, che è la stessa colonna, in questo caso.Le colonne di iniziare con 1
.
Inoltre, se si desidera ignorare maiuscole/minuscole, aggiungere --ignore-case
per il tipo di comando.
AVVISO: "a" viene dopo "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
File differenziandosi unicamente da una stringa numerica può essere ordinato su questo numero a condizione che è preceduto da un separatore.
In questo caso, la seguente sintassi può essere utilizzato:
ls -x1 file | sort -t'<char>' -n -k2
Esempio:
ls -1 TRA*log | sort -t'_' -n -k2
TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
Dalla pagina man (per bash ls):
voci Ordine alfabetico se nessuno dei -cftuSUX né --sort.
Controlla il file .bashrc
per gli alias.
L'utilità ls
deve essere conforme allo standard IEEE Std 1003.1-2001 ( POSIX.1
) in cui si afferma:
22027:. Deve ordinare directory e non directory operandi separatamente in base alla sequenza di collazione nella localizzazione corrente
26027: per impostazione predefinita, il formato non è specificato, ma l'uscita sono in ordine alfabetico al nome simbolo:
- Biblioteca o il nome dell'oggetto, se -A è specificato
- Nome Simbolo
- tipo Simbolo
- valore del simbolo
- Il formato associato al simbolo, se applicabile
ls -X funziona a tal fine, nel caso in cui si hanno ls alias ad un più utile di default.
In Debian Jessie, this works nice:
ls -lah --group-directories-first
# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha
# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --