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.

bcsteeve
la source

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
thom
la source
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
amc
la source
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
andr3w
la source
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.

Aditya Kresna
la source
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.

MOHRE
la source
-3

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

ls|grep jpg |wc -l
Alexander Chip
la source