Comment obtenir une liste de répertoires Linux pour les fichiers commençant par une certaine lettre qui ne descend pas dans les sous-répertoires?


17

Supposons que vous vous trouviez dans un répertoire contenant de nombreux fichiers et de nombreux sous-répertoires.

Vous souhaitez obtenir une liste de répertoires de tous les fichiers commençant par la lettre "d". Vous tapez

ls d*

et ce que vous récupérez est principalement des fichiers dans des sous-répertoires (en particulier, des fichiers dans des sous-répertoires qui commencent par "d").

Comment répertoriez-vous uniquement les fichiers et les noms de répertoire dans votre répertoire actuel?

Réponses:


31

Ah, je viens de le trouver à la 6e lecture de la page de manuel. C'est le paramètre "répertoire" pas si judicieusement nommé

ls -d d* 

6
Il vous a fallu seulement 29 secondes pour relire la page de manuel et rédiger cette réponse? C'est rapide :-)
balpha

1
De plus, ls -dd * / n'affichera que les répertoires.
innaM

6
balpha - Je l'ai découvert avant de soumettre la question, puis j'ai réalisé que si cela me prenait si longtemps pour comprendre cela, je pourrais aussi bien aider un futur chercheur à publier les q et a ici.
dggoldst

3
C'est suffisant; il n'y a rien de mal à cela.
balpha

1
Et pourtant, CppLearner, cela fonctionne bien. Essayez-le.
dggoldst

10

Je crois qu'une autre solution intéressante est,

ls | grep ^d

Offre la flexibilité des expressions régulières.


3
Et la complexité des expressions régulières! ;-)
Chris Nava

1
C'est une solution intéressante, et j'aime l'idée d'utiliser des expressions régulières, cependant, si vous ajoutez des paramètres supplémentaires à ls, cela cassera. Par exemple "ls -l | grep ^ d"
dggoldst

Vrai, mais pas tous les paramètres. ls -a | grep "^ \." imprimerait tous les fichiers "cachés".
Kuer

d'autres ls flagsne fonctionnent pas lors de l'utilisation de cette approche. par exemple, ls -ltr | grep ^dne fonctionne pas. tandis que celui suggéré dans la réponse @dggoldst le fait.
hitesh israni

3

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

D'accord, l'utilisation de trouver ici est un peu exagéré. Juste un peu.


1
Mais il m'a aidé à énumérer tous les répertoires directs d'un utilisateur spécifique: find /home/ -maxdepth 1 -type d -user www-data. Alors merci, et +1
Cyril N.

1

ls -ld: Il donnera la liste des répertoires, sans descendre dans les sous-répertoires.

Exemple:

ls -ld Cust*
Cette commande fournira une liste des fichiers et répertoires commençant par Cust.


1
C'est essentiellement la même chose que la réponse acceptée de cinq ans.
Scott
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.