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.