Come limitare l'output di ls per mostrare solo nome file, data e dimensioni?


25

Come posso usare lsin Linux per ottenere un elenco solo di data e dimensione dei nomi di file? Non ho bisogno di vedere le altre informazioni come proprietario, permesso.


di quale Linux stiamo parlando?
tolitius,

server apache ..

Risposte:


26

ls -l | awk '{print $5, $6, $7, $9}'

Questo stamperà la dimensione del file in byte, mese, data e nome file.

jin@encrypt /tmp/foo % ls -l
total 0
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 bar
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 baz
drwxr-xr-x  2 jin  wheel  68 Oct  4 12:43 quux

jin@encrypt /tmp/foo % ls -l | awk '{print $5, $6, $7, $9}'
68 Oct 4 bar
68 Oct 4 baz
68 Oct 4 quux

@Sosukudo Sì, neanche io ne sono sicuro. Ma la gente sembra concordare sul fatto che sia giusto sottovalutare le cattive domande ma non le risposte se sono utili. meta.stackexchange.com/questions/98197/…
Jin

@Sosukodo: sentiti libero di votare adesso :)
vedi il

6
nessun supporto per nomi di file con spazi multipli
meso_2600

12

Tecnicamente, non è possibile con ls, ma findpuò fare lo stesso lavoro con il suo -printfinterruttore:

find -maxdepth 1 -printf '%t %s %p\n'

1
Il tuo suggerimento è il mio vincitore, e raccomanderei che se le persone sono interessate a più campi per la stampa, loro RTFM. Ad esempio, mostrami le autorizzazioni per tutti i file che non sono una directory: find usr/lib/ -not -type d -printf '%M %p\n output: -rw-r--r-- usr/lib/x86_64-linux-gnu/apr-util-1/apr_crypto_openssl-1.so... Insegna a un uomo a pescare e tutto il resto ...
Craig,

La domanda riguarda Linux, quindi non è una risposta irragionevole, ma per la cronaca questo richiede GNU find.
Dan Pritts,

5

puoi sempre fare:

$ ls -l
total 0
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file1
-rw-r--r--  1 user  staff  0 Oct  6 23:29 file2
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file3
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file4
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file5
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file6
-rw-r--r--  1 user  staff  0 Oct  6 23:30 file7

cut a:

$ ls -l | cut -f 8-13 -d ' '

0 Oct  6 23:29 file1
0 Oct  6 23:29 file2
0 Oct  6 23:30 file3
0 Oct  6 23:30 file4
0 Oct  6 23:30 file5
0 Oct  6 23:30 file6
0 Oct  6 23:30 file7

$ 

4
non funziona con: proprietà variabili, gruppi, dimensioni dei file
meso_2600

Cut non comprime i delimitatori consecutivi, dove ls -lutilizza il riempimento degli spazi bianchi. Se le colonne non sono di lunghezza uniforme (quale colonna 5, spesso le dimensioni del file non lo faranno), il taglio non selezionerà le colonne correttamente. La compressione degli spazi consecutivi sarà di aiuto (attenzione agli spazi nei nomi dei file). ls -l | tr -s ' ' | cut -f 8-13 -d ' '
Dave,

4

Un'altra non- lsvia:

> stat --printf='%y\t%12s\t%-16n|\n' tmp.*
2017-06-15 10:42:07.252853000 +0200         10485760    tmp.1           |
2017-06-15 10:41:25.659570000 +0200              666    tmp.TKPzm3BfRw  |

Spiegazione: %y= data di modifica leggibile dall'uomo; %s= dimensione in byte ( %12sallineato a destra, lunghezza 12); %n= nome file ( %-16nallineato a sinistra, lunghezza 16); \t= tab, \n= avanzamento riga. |= letter pipe pipe, solo per mostrare la fine del nome del file.

Come ls, statnon ha opzioni per selezionare quali file mostrare. (Ciò può essere fatto con il globbing della shell come mostrato sopra o alcuni find ... -print0 | xargs -r0 stat ..., per esempio.)


La domanda era su Linux, quindi la tua risposta va bene, ma per chiunque si preoccupi, ecco un equivalente per le statistiche di FreeBSD. stat -f '%N %Sm %z' filename
Dan Pritts,

2

Leggera variazione su tolitius

ls -lh | cut -f 6- -d ' '

1
Ti interessa spiegare cosa aggiunge la variazione?
Ivo Flipse,

Rimuove semplicemente la necessità di specificare il numero del campo finale usando il 6- in
anziché
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.