Come posso fare per visualizzare solo i file?


24

Immagino che ci debba essere un modo per far visualizzare solo non-directory, ma la pagina man non lo rende ovvio


Non sei sicuro di ls, ma si può facilmente farlo con il filecomando: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck l'

1
Un altro modo sarebbe quello di filtrare l'output di lsthrough grep, qualcosa del genere ls -1F /directory/containing/the/files | grep -vE /$. Ma tieni presente che l' analisi dell'output di ls può essere difficile .
Henning Kockerbeck l'

Risposte:


37
ls -p | grep -v /

L'utilizzo di ls -pdice lsdi aggiungere una barra alle voci che sono una directory e l'uso di grep -v /dice grepdi restituire solo le linee che non contengono una barra.


Ho controllato questo perché è la mia risposta preferita (mentre li ho votati tutti), ma ora
sto

"Puoi usare 1 switch per un elenco a colonna singola" scusa, ho provato a capire cosa volevi dire, apprezzerei ed esempio / spiegazione se lo
facessi

@sdkks Non è necessario lo 1switch quando si reindirizza l'output in quanto per impostazione predefinita su una singola colonna in quella situazione. Se è questo che intendevi.
thomasrutter,

@thinksinbinary non è sicuro di come renderlo multi colonna ma potresti cercare o porre la tua domanda separata e qualcuno lo saprà.
thomasrutter,

7

Puoi provare questo:

find . -maxdepth 1 -not -type d

E mappalo su un alias speciale.

Ma se sei davvero appassionato di usare il lscomando, qui:

ls -p | egrep -v /$


6

In alternativa:

ls -lAh | grep -v '^d'

Questo metodo elenca in

  • -l Formato elenco lungo
  • -A Visualizza quasi tutto (mostra i file nascosti ma non mostrare .e ..)
  • -h Dimensioni file leggibili dall'uomo

mentre grep

  • -v Non mostrare i record corrispondenti
  • Regular expressionfiltro ^d: iniziano con la lettera d (per directory), ad esdrwxrwxr-x <some file details> <foldername>

Se non vuoi scrivere ogni volta, puoi trasformarlo in un alias per il tuo profilo bash / shell.


2

Ho visto nel tuo commento (@thinksinbinary) la risposta di @thomasrutter, che volevi poterli stampare in ordine inverso e in colonne. Probabilmente l'hai già capito o è passato, ma eccolo qui:

ls -pr | grep -v / | column
  • -p aggiunge la barra ('/') ai nomi delle directory
  • -r inverte l'ordine di output
  • -v consente a grep di effettuare una ricerca inversa per stampare tutto tranne le directory ( tutto ciò che non ha il '/' che -p ha messo lì )
  • " colonna lo mette in colonne" - Capitano Ovvio

1
penso sia bello che sul forum di Ubuntu le persone continuino a commentare e leggere i tuoi post dopo molto tempo. Volevo tornare a Linux per imparare sistemi di assemblaggio e operativi poiché farlo su Windows è molto più difficile. Grazie!
thinksinbinary,

0
ls -F | grep -v /

Sopra il comando visualizza i file, ma include collegamenti simbolici, pipe, ecc. Se si desidera eliminarli, è possibile utilizzare uno dei flag menzionati di seguito.

ls -Faggiunge simboli ai nomi dei file. Questi simboli mostrano informazioni utili sui file.

ls -F | grep -Ev '/|@|*|=|>|\|'

Sopra il comando visualizza solo i file.

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.