2011-06-19 6 views
2

Je veux obtenir une liste de tous mes fichiers de type ofl dans plusieurs répertoires. J'ai utilisé la commande mise en jachère:Liste trop longue pour la commande `ls`, CSH

ls RESULTS/*/quakesim/iecrud/quake/fgb/stflt/*.ofl 

mais je reçu un message: /bin/ls: Argument list too long. Il y a un peu plus de 1600 ces fichiers. Y at-il un moyen d'obtenir toujours la liste des fichiers?

EDIT:

J'ai besoin des chemins d'accès aux fichiers et non seulement combien sont-ils le wc était comme essayer de voir combien de fichiers je sans « polluer » mon écran avec 1600+ chemins.

+1

S'il vous plaît ne pas écrire des réponses ou des commentaires disant que je ne devrais t utiliser 'csh'. – SIMEL

+0

* Cette instance n'est en fait pas la faute de csh. –

+0

http://unix.stackexchange.com/ peut être un meilleur endroit pour demander – nico

Répondre

5

Utilisez find au lieu de ls.

Exemple: (en supposant que votre répertoire de travail actuel est la société mère de RESULTS)

find . -name "RESULTS/*/quakesim/iecrud/quake/fgb/stflt/*.ofl" -print

option Deuxième:

find . -print | egrep '.ofl$'

+0

La deuxième option a fonctionné. – SIMEL

0

Vous pouvez créer un script bash rapide qui itère à travers différentes lettres de a à z pour l'une de vos deux étoiles, puis, pour chaque résultat, vous ajoutez le résultat de wc au total actuel pour chaque itération et vous renvoyez le résultat.

Vous pouvez également voir si cela fonctionnerait juste en utilisant:

[a-m]* 
[o-z]* 

sur seulement deux commandes différentes. Peut-être plus simple, bien que je ne connaisse pas la limite du nombre d'arguments.