web-dev-qa-db-fra.com

Comment combiner ls et grep pour ne lister que les fichiers et utiliser ls pour compter les répertoires

J'ai du mal à combiner ls et grep. Le fait est que je ne dois utiliser que ls et grep pour répertorier tous les fichiers du répertoire de base. J'ai essayé plusieurs combinaisons mais sans effet. Je pense que je devrais l'utiliser comme:

ls /home/mydir | grep stomething

La question suivante est (aucune idée comment faire) comment utiliser ls et une autre commande pour compter le nombre de répertoires dans le dossier principal?

2
masterllama

Votre utilisation de ls et de grep est correcte. Vous obtiendrez des résultats dans la sortie de ls contenant le mot "stomething". Notez que cela regarde toute la ligne, pas seulement le nom de fichier (principalement applicable lors de l'utilisation de certains drapeaux avec ls, tels que ls -l, etc.).

Pour trouver des répertoires, il vaut mieux utiliser find et wc (wordcount):

find /home/mydir -maxdepth 1 -mindepth 1 -type d | wc -l

Explication:

  • maxdepth 1, comptez jusqu'à une profondeur maximale dans l'arborescence de 1 (par exemple, uniquement les répertoires, pas les sous-répertoires dans ce cas)
  • mindepth 1, essentiellement utilisé dans cet exemple pour s'assurer que find ne trouve pas "." également.
  • tapez d, cherchez des répertoires (-type f trouvera des fichiers, l trouvera des liens soft etc.)
  • wc -l, compte le nombre de lignes retournées

Si vous exécutez cela sans le tuyau to wc, vous obtiendrez une liste de tous les résultats. Find est une commande très pratique à connaître.

5
drinxy