web-dev-qa-db-fra.com

Liste des fichiers d'extension particulière

Ok c'est étrange. J'utilise ce code,

ls *.prj

Pour lister tous les fichiers avec l’extension .prj dans le répertoire mais j’obtiens cette erreur,

bash:/bin/ls: la liste d'arguments est trop longue

Je souhaite éventuellement obtenir le nombre de fichiers et j'utilisais,

ls * .prj | wc -l

Mais même cette commande donne la même erreur. Une idée où je vais mal?

5
Sam007

Rien, il y a une limite au nombre d'arguments que bash peut traiter. Faire

ls | grep '\.prj$' | wc -l
1
January

Utilisez la commande find à la place

 find . -name "*.prj"

Vous pouvez également combiner les commandes avec find

find . -name "*.prj" -exec COMMAND {} \;

J'espère que cela t'aides.

8
devav2

L'analyse de la sortie de ls n'est pas fiable . Cela fonctionnera probablement dans votre cas, mais ls modifie les caractères non imprimables. Voici un moyen totalement fiable de compter les fichiers correspondant à une extension donnée. Cet extrait de shell crée un tableau contenant les noms de fichier, puis affiche le nombre d'éléments du tableau.

a=(*.prj)
echo ${#a[@]}
3
Gilles