[script-Bash] ls : argument list too long [Fermé]

Signaler
-
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
-
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 !

5 réponses

Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 852
Salut,

T'as essayé avec "find" comme dans l'exemple de la FAQ ?
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 532 > phil
Salut,

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

> phil
Rhraa ! Ca ne marche pas, ça donne le même résultat qu'un simple 'ls'.
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 852 > phil
Et :
find . -type -f -name 'gse.normal.*' -exec echo {} \;
:-))
>
Messages postés
40805
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020

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.
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
467
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 !

:-))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 532
Salut,

mais tu as utilisé xargs il me semble :-)
Messages postés
8158
Date d'inscription
samedi 7 août 2004
Statut
Membre
Dernière intervention
1 septembre 2014
467
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 !).

:-))
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 254
cette syntaxe :
find . -type -f -name \*normal* | xargs ls
est bien étrange. Et celle là:
find . -type f -name \*normal\* -ls
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 532
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 :-)
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 254
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 ...
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 :))))
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 532
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\';