Comment compter le nombre de fichiers dans un répertoire mais pas récursivement


30

Question simple, je suis sûr. J'ai vu une réponse qui montre comment le faire, y compris les sous-répertoires, mais je veux savoir combien de fichiers (pas de dossiers) se trouvent dans le répertoire actuel uniquement. Merci.

Réponses:


60
ls -F |grep -v / | wc -l
  1. ls -F répertorier tous les fichiers et ajouter l'indicateur (l'un des * / => @ |) aux entrées
  2. grep -v /conserver toutes les chaînes qui ne contiennent pas de barre oblique
  3. wc -l compter les lignes

Liste de tout sauf des répertoires.
thom

J'apprécie vraiment que vous le décomposiez et expliquiez les sections, merci pour une réponse fonctionnelle et bien expliquée!
bcsteeve

1
Bien que toutes les réponses résolvent mon problème, je choisis celui-ci comme étant le plus documenté et le plus facile à comprendre pour moi. Mais merci à tous!
bcsteeve

15

Essayez ce oneliner:

find -maxdepth 1 -type f | wc -l

C'est bien, seulement des fichiers et rien d'autre :-)
thom

Cela saute les liens et les périphériques de caractères spéciaux.
ojblass

Toutes les réponses ici fonctionnent très bien! Alors d'abord, MERCI. Deuxièmement ... comment choisir?
bcsteeve

6

Essaye ça

ls -al | grep ^[-] | wc -l
  1. ls -al - liste de tous les fichiers au format long
  2. grep ^[-] - recherchez la chaîne qui commence par "-" qui est le symbole pour désigner le fichier normal lorsque le fichier de liste avec ls -al
  3. wc -l - compter les lignes

Et les liens logiciels? Qu'en est-il des fichiers liés en dur?

Nice one, seulement des fichiers et des liens, rien d'autre.
thom

Pour le lien souple / dur remplacer -parl
andr3w

J'apprécie vraiment que vous le décomposiez et expliquiez les sections, merci pour une réponse fonctionnelle et bien expliquée!
bcsteeve

2

Je veux juste ajouter la réponse de thom parce que j'aime jouer avec Bash . Ça y est:

echo "Directory $(pwd) has $(ls -F |grep -v / | wc -l) files"

Ci-dessous est un exemple de résultat de mon /datarépertoire:

Directory /data has 580569 file(s).

Et voici mes explications:

  1. echo double-quoted-message imprimera un message souhaitable.
  2. $(any-desirable-valid-command)à l'intérieur du message entre guillemets double echoaffichera le résultat de l'exécution de la commande associée.
  3. pwd imprimera le répertoire courant.
  4. ls -Fsert à répertorier tous les fichiers et à ajouter un indicateur (l'un de * / => @ |) aux entrées. J'ai copié ceci de la réponse de thom .
  5. grep -v /est une commande de recherche en texte brut, le -v /paramètre conservera toutes les chaînes qui ne contiennent pas de barre oblique.
  6. wc -l imprimera le comptage de lignes.

Je sais que cette question a 3 ans, je ne peux tout simplement pas retenir mon envie d'ajouter une autre réponse.


2

Si vous avez treeinstallé sur votre système, vous pouvez utiliser cette commande:

tree -L 1 /path/to/your/directory | tail -n 1

Il vous montre le nombre de fichiers et de répertoires dans ce répertoire.

-L n montre la profondeur de la recherche.

Vous pouvez installer treeavec sudo apt-get install tree.


-3

Pour compter le nombre total de fichiers avec une extension spécifique, vous pouvez taper:

ls|grep jpg |wc -l
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.