Pour le répertoire courant :
find -type f | wc -l
Cela devrait fonctionner :
find DIR_NAME -type f | wc -l
Explication :
-type f
pour n'inclure que des fichiers.|
(et non¦
) redirigefind
sortie standard de la commande surwc
l'entrée standard de la commande.wc
(abréviation de nombre de mots) compte les retours à la ligne, les mots et les octets sur son entrée (docs).-l
pour ne compter que les retours à la ligne.
Remarques :
- Remplacer
DIR_NAME
avec.
pour exécuter la commande dans le dossier courant. - Vous pouvez également supprimer le
-type f
pour inclure les répertoires (et les liens symboliques) dans le décompte. - Il est possible que cette commande surcompte si les noms de fichiers peuvent contenir des caractères de saut de ligne.
Explication de la raison pour laquelle votre exemple ne fonctionne pas :
Dans la commande que vous avez montrée, vous n'utilisez pas le "Pipe" (|
) pour connecter en quelque sorte deux commandes, mais la barre cassée (¦
) que le shell ne reconnaît pas comme une commande ou quelque chose de similaire. C'est pourquoi vous obtenez ce message d'erreur.