Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/08/2006, 10h50   #1
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 135
Points : 14
Points : 14
Envoyer un message via MSN à ujoodha
Par défaut Probleme sur le ls

Bonjour,

J'ai voulu faire une fonction qui deplace des fichiers d'un repertoire a un autre

Code :
1
2
3
4
5
REP=`ls reno_nok/*.xml`
for FICHIER in $REP
do
	cp $FICHIER reno2
done
en faisant cela le serveur m'a repondu de la maniere suivante:
lance_modules.ksh[32]: /usr/bin/ls: 0403-027 Liste de paramètres trop longue.

Est ce qu'il y a une taille sur le ls ou pas ?

comment faire pour que ca marche ?

Note : Le repertoire contenait 7000 fichiers

Merci.
ujoodha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h53   #2
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
Citation:
Envoyé par ujoodha
Bonjour,

J'ai voulu faire une fonction qui deplace des fichiers d'un repertoire a un autre

Code :
1
2
3
4
5
REP=`ls reno_nok/*.xml`
for FICHIER in $REP
do
	cp $FICHIER reno2
done
en faisant cela le serveur m'a repondu de la maniere suivante:
lance_modules.ksh[32]: /usr/bin/ls: 0403-027 Liste de paramètres trop longue.

Est ce qu'il y a une taille sur le ls ou pas ?

comment faire pour que ca marche ?

Note : Le repertoire contenait 7000 fichiers

Merci.
J'ai déjà eu ce problème.
Le script est il en ksh ? en sh ou en bash ?
En bash, j'ai réussi à faire un ls avec plus de 50 000 fichiers.

As tu que des .xml dans ton répertoires? Si oui, alors pas la peine de mettre l'extension REP=`ls reno_nok` te fais passer outre cette limite.
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 10h59   #3
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 135
Points : 14
Points : 14
Envoyer un message via MSN à ujoodha
Par défaut Comment ??

J'ai pas compris la cause
c'est du ksh et non il n'y a pas que du .xml

Tu penses qu'il y une sorte de taille buffer sur le ls
ujoodha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 11h49   #4
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
Citation:
Envoyé par ujoodha
J'ai pas compris la cause
c'est du ksh et non il n'y a pas que du .xml

Tu penses qu'il y une sorte de taille buffer sur le ls
En fait quand tu fais le "ls *", le shell va remplacer * par tous les fichiers trouvé

Ex:
Répertoire A, contenant la suite de fichier :
maison.txt
carotte.txt
bidule.prt

Je lance : ls simplement.
ls va se lancer et tout afficher.

Je lance : ls A/*
Le shell remplace * et lance la commande
ls A/maison.txt A/carotte.txt A/bidule.prt

Donc si ton * est trop important, alors le shell remplace par beaucoup trop de fichier que le buffer de "ls" peut contenir en argument -> Erreur : argument too long
PS : je ne suis pas sur que ca soit ls qui renvoie l'erreur ou le shell. J'avoue ne pas avoir chercher mais l'idée est là
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 12h08   #5
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 135
Points : 14
Points : 14
Envoyer un message via MSN à ujoodha
Ok merci bien je comprend mieux maintenant
Merci de m'avoir m'aider
ujoodha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 14h17   #6
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
Je me rappelle de la solution!
Enfin, plutot une dérivée de solution
J'avais fait des ..etc sur toutes les lettres de l'alphabet. Chiant mais pas le choix avec 65 000 fichiers (une base de données sur des petits fichiers plats d'un kilo... qui a grossit, grossit!)
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/08/2006, 18h35   #7
Rédacteur
 
Avatar de nyal
 
Inscription : septembre 2002
Messages : 611
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2002
Messages : 611
Points : 811
Points : 811
Envoyer un message via MSN à nyal
Bonjour,

C'est un problème classique. Il y'a une solution simple:
Code :
1
2
3
4
5
 
for FICHIER in reno_nok/*.xml
do
	cp $FICHIER reno2
done
Cette syntaxe est plus rapide et vous n'avez plus l'erreur pour la longueur.
nyal est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2006, 01h05   #8
Membre émérite
 
Avatar de Pouic
 
Inscription : octobre 2004
Messages : 668
Détails du profil
Informations personnelles :
Âge : 28
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2004
Messages : 668
Points : 904
Points : 904
Code :
find reno_nok/ -name "*.xml" -exec cp {} reno2/ \;
Éventuellement, ajouter un
-maxdepth 1
__________________
Software becomes slower faster than hardware becomes faster

http://xrenault.developpez.com
API C standard (C ANSI )
Pouic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2006, 15h35   #9
Candidat au titre de Membre du Club
 
Inscription : mars 2005
Messages : 135
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 135
Points : 14
Points : 14
Envoyer un message via MSN à ujoodha
le find est pas mal
je vais tester merci de vos solutions
ujoodha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h29.


 
 
 
 
Partenaires

Hébergement Web