[script-Bash] ls : argument list too long

phil -  
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité -
Salut à tous,

Dans un de mes répertoire j'ai 3 types de fichiers :
*.gse ;'*.normal et *.normal.PgSg
Mon script fonctionne sous bash mais lorsque je fais ls *.normal j'ai un message d'erreur : argument list too long.
J'ai suivie les conseils trouvé sur CCM et je remplace donc cette commande par : ls *.normal | xargs ls mais ça me renvoie tous les fichiers de mon rep et pas seulement ceux finissant par normal ou plus.
Que faire ??

:) Merçi d'avance !
A voir également:

5 réponses

jipicy Messages postés 41342 Statut Modérateur 4 896
 
Salut,

T'as essayé avec "find" comme dans l'exemple de la FAQ ?
0
phil
 
Salut jipicy,

Oui j'ai essayé les 2 méthodes et les deux me donnent le même résultats : l'affichage de tous les fichiers présents dans le rep.
Bon ! d'un autre côté j'ai bêtement réglé le problème en changeant de machine de calcul, du coup ça marche.
Mais ça reste bizarre. Tiens voilà ce que ça donne :
condor.plang$ find . -type -f -name \*normal* | xargs ls
20001229-160121.gse
20001229-160121.gse.normal
20001229-160121.gse.normal.PgSg.PS2PnSn.2-15
20001229-213419.gse
20001229-213419.gse.normal
20001229-213419.gse.normal.PgSg.PS2PnSn.2-15
20001230-150711.gse
20001230-150711.gse.normal
20001230-150711.gse.normal.PgSg.PS2PnSn.2-15
20001231-113509.gse
20001231-113509.gse.normal
20001231-113509.gse.normal.PgSg.PS2PnSn.2-15
20001231-120928.gse
20001231-120928.gse.normal
20001231-120928.gse.normal.PgSg.PS2PnSn.2-15

alors que je voudrais :
20001229-160121.gse.normal
20001229-160121.gse.normal.PgSg.PS2PnSn.2-15
20001229-213419.gse.normal
20001229-213419.gse.normal.PgSg.PS2PnSn.2-15
20001230-150711.gse.normal
20001230-150711.gse.normal.PgSg.PS2PnSn.2-15
20001231-113509.gse.normal
20001231-113509.gse.normal.PgSg.PS2PnSn.2-15
20001231-120928.gse.normal
20001231-120928.gse.normal.PgSg.PS2PnSn.2-15
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570 > phil
 
Salut,

essaie comme ça
find . -type -f -name 'gse.normal.*' | xargs ls

0
phil > phil
 
Rhraa ! Ca ne marche pas, ça donne le même résultat qu'un simple 'ls'.
0
jipicy Messages postés 41342 Statut Modérateur 4 896 > phil
 
Et :
find . -type -f -name 'gse.normal.*' -exec echo {} \;
:-))
0
phil > jipicy Messages postés 41342 Statut Modérateur
 
Ca ne marche pas non plus, mais Dubcek a donné une commande qui fonctionne.
Ca me rend fou de bloquer sur cette simple commande sachant que le reste de mon script va certainement y passer aussi, hahaha.
0
bob031 Messages postés 8228 Statut Membre 473
 
Salut,

j'ai eu un souci comme celui-ci !
Je l'ai réglé en lançant le script à partir du dossier contenant les fichiers à utiliser !
Mais je ne suis pas sûr que cela puisse t'aider !

:-))
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

mais tu as utilisé xargs il me semble :-)
0
bob031 Messages postés 8228 Statut Membre 473
 
oui !
la première fois ça a très bien marché !
Ensuite c'est devenu + ou - alléatoire !
Je sais ce n'est pas normal tu va me dire ! Probablement une erreur de ma part.
Mais ça m'est arrivé ! De toute façon c'est une commande pour lancer des tests donc l'option script n'était plus nécessaire.
J'étais sous Darwin X (MacOS) (ce qui devrait pas changer grand chose !).

:-))
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
cette syntaxe :
find . -type -f -name \*normal* | xargs ls
est bien étrange. Et celle là:
find . -type f -name \*normal\* -ls
0
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
Salut,

perso je préfère les apostrophes simples que les antislashes :-) sauf dans les cas où je n'ai pas le choix bien sûr :-)
0
dubcek Messages postés 19021 Statut Contributeur 5 637
 
Vaste débat.
Ne faut-il pas écrire "barre oblique inversée" ou alors backslash ?
la Commission Générale de Terminologie et de Néologie (CGTN) a du se prononcer !! :-))
Osons : je suis partisan de l'ampersand & et non de la perluette !!
j'aime les arcanes des backslashes dans les scripts ...
0
phil
 
Alors j'ai tapé cette commande :
find . -type f -name \*normal\* -ls
et ça marche. Le seul détail gênant c'est que ça donne aussi les info du fichier, genre : droit en écriture, en lecture, date de modif....Mais ça marche donc c'est plutôt cool ! Merci dubcek :))))
0

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

Posez votre question
lami20j Messages postés 21644 Statut Modérateur, Contributeur sécurité 3 570
 
En fait on devrait dire

back = en arrière
slash = oblique

en arrière oblique

Il n'y a pas une barre nulle part :-))

en ce cas je préfère le terme anglais backslash mais je suis sur un site francophne.

si un jour la commision decidera de l'appéler ZORO alors on va demander à Alain DELON ce qu'il pense mais ça sera mieux de voir aussi où il en est avec l'informatique :-))

j'aime les arcanes des backslashes dans les scripts

ça ne me dérange pas non plus, mais je préfère quand mème les apostrophes simples (ou les virgules suspendues ou je ne sais pas quoi ils vont trouver encore CGTN :-)))) quand j'ai quelque chose comme ça

$var = "\\un\\deux\\trois\\quatre\\cinq\\six\\etc\\";

et la même chose
$var = '\un\deux\trois\quatre\cinq\six\etc\';
0