Pour le répertoire courant :
find -type f | wc -l
Cela devrait fonctionner :
find DIR_NAME -type f | wc -l
Explication :
-type fpour n'inclure que des fichiers.|(et non¦) redirigefindsortie standard de la commande surwcl'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).-lpour ne compter que les retours à la ligne.
Remarques :
- Remplacer
DIR_NAMEavec.pour exécuter la commande dans le dossier courant. - Vous pouvez également supprimer le
-type fpour 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.