[Unix] Erreur bizarre

Fermé
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 - 30 juil. 2007 à 17:07
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 - 8 août 2007 à 10:57
Bonjour,

J'essaie de faire des recherches de fichiers dans un répertoire assez gros (96 megas). Le problème apparait lorsque je tape ceci

$:>ll EDMS*
ll: /usr/bin/ls: arg list too long
$:>
Le ll seul fonctionne mais apparemment il n'accepte pas les tris...
Quelqu'un a-t-il une idée sur la question ?
D'avance merci.

Trez

14 réponses

bob031 Messages postés 8158 Date d'inscription samedi 7 août 2004 Statut Membre Dernière intervention 1 septembre 2014 472
30 juil. 2007 à 17:21
Salut,

arg list too long
il me semble que c'est une histoire de mémoire du bash (trop d'arguments à gérer ou quelque chose comme ça).
Il semble que la commande xargs est faite pour contourner ce genre de problème !

si je dit pas trop de bêtises ....


:-))
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
30 juil. 2007 à 17:37
Merci,
cela dit je n'ai aucune sur la maniere d'utiliser cette commande...
Trez
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 juil. 2007 à 18:28
Salut,

suppression impossible liste d arguments trop longue

;-))
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
30 juil. 2007 à 19:06
Oui mais...
$>ll *EDMS* | xargs ls | grep *1508113*
ll: /usr/bin/ls: arg list too long
Trez :-(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
30 juil. 2007 à 19:13
find . -name "EDMS*" -exec ll {} \; | grep *1508113*
;-))
0
Merci ;)
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
7 août 2007 à 11:55
Re-,

Quand je lance la commande suggerée par jipicy, je tombe sur ceci :
mercprod@t-280-1:>find . -name "EDMS*" -exec ll {} \; | grep *
ksh: /bin/grep: arg list too long
Broken Pipe
Broken Pipe
Broken Pipe
Broken Pipe
Broken Pipe
Broken Pipe
Broken Pipe

Please help :-((

Merci

Trez
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 août 2007 à 12:03
Re-

Affiche ta commande s'il te plaît et si possible un listing du répertoire où tu fais ta recherche (enfin du moins quelques lignes si trop volumineux ;-)) )
0
Bonjour

Bah euh... "ll" c'est pas une commande, c'est un alias !

La première chose a faire est donc "alias ll" pour voir ce qu'il y a dans ton alias.

Personne n'a pensé a ca ?? hmmm....

Bonne journée
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
7 août 2007 à 12:08
Hello,

J'ai également essayé le
ls
mais rien n'y fait (ca ne vient pas des alias car la commande marche ailleurs). A vrai dire, j'ai essayé une multitude d'actions sur ce dossier mais je recois systémtiquement le même message car il est trop volumineux...

Trez
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 897
7 août 2007 à 12:11
C'est l'astérisque (*) de "grep *" qui génère l'erreur, il faut lui donner une expression régulière entière et pas un caractère générique. Dans ce cas autant ne rien mettre du tout !
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
7 août 2007 à 15:50
merci ;)
0
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 569
7 août 2007 à 16:42
Salut,

GlobalRegularExpressionPrint c'est un utilitaire qui utilise des regex
* c'est un métacaractère utilisé en tant que quantificateur
dans le cas de shell * veut dire globalisation (ex. trouve les fichiers qu'ont l'extension txt : ls -l *.txt)

dans le cas de grep on écrit
.* qui veut dire n'importe quel caractère (le metacaractère . ) zéro fois minimum et autant que tu peux maximum
0
Trezeg Messages postés 73 Date d'inscription mercredi 20 décembre 2006 Statut Membre Dernière intervention 24 novembre 2010 2
8 août 2007 à 10:57
merci pour toutes ces précieuses explications ;-)
0