Come ottenere un elenco delle directory di Linux per i file che iniziano con una determinata lettera che non scende nelle sottodirectory?


17

Supponiamo di essere in una directory che contiene molti file e molte sottodirectory.

Si desidera ottenere un elenco di directory di tutti i file che iniziano con la lettera "d". Tu digiti

ls d*

e ciò che ottieni sono principalmente file in sottodirectory (in particolare, file in sottodirectory che iniziano con "d").

Come si elencano solo i file e i nomi delle directory nella directory corrente?

Risposte:


31

Ah, l'ho appena trovato sulla sesta lettura della pagina man. È il parametro "directory" non così ragionevole

ls -d d* 

6
Ti ci sono voluti solo 29 secondi per rileggere la pagina man e scrivere questa risposta? È veloce :-)
balpha,

1
Inoltre, ls -dd * / mostrerà solo le directory.
innaM

6
balpha - L'ho scoperto prima di inoltrare la domanda, poi ho capito che se mi ci fosse voluto così tanto tempo per capirlo, avrei potuto anche aiutare un futuro ricercatore a pubblicare qui la q e la a.
Dggoldst,

3
Giusto; non c'è niente di sbagliato in questo.
balpha,

1
Eppure, CppLearner, funziona davvero. Provalo.
Dggoldst,

10

Credo che un'altra soluzione interessante sia

ls | grep ^d

Offre la flessibilità delle espressioni regolari.


3
E la complessità delle espressioni regolari! ;-)
Chris Nava,

1
Questo è un soln interessante, e mi piace l'idea di usare regexs, tuttavia, se aggiungi parametri aggiuntivi a ls si romperà. Ad esempio "ls -l | grep ^ d"
dggoldst

Vero, ma non tutti i parametri. ls -a | grep "^ \." stamperebbe tutti i file "nascosti".
Kuer

altri ls flagsnon funzionano quando si utilizza questo approccio. ad es. ls -ltr | grep ^dnon funziona. mentre quello suggerito nella risposta @dggoldst lo fa.
hitesh israni,

3

trova . -maxdepth 1 -name d * -type f

Ok, usare find qui è un po 'eccessivo. Solo un po '.


1
Ma mi ha aiutato a elencare tutte le directory diretti di un utente specifico: find /home/ -maxdepth 1 -type d -user www-data. Quindi grazie e +1
Cyril N.

1

ls -ld: Fornirà l'elenco delle directory, senza scendere nelle sottodirectory.

Esempio:

ls -ld Cust*
Questo comando fornirà un elenco dei file e delle directory che iniziano con Cust.


1
Questo è essenzialmente lo stesso della risposta accettata di cinque anni.
Scott,
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.