Deplacer 2000 fichiers

Deplacer 2000 fichiers - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 28-03-2003 à 12:47:32    

Bonjour,
 
J'ai un probleme simple: j'ai un repertoire dans lequel je veux deplacer tous les fichiers .truc et .chose. Sauf qu'ils sont trop nombreux, et si je fais


mv *.truc *.chose repertoire

 
la ligne de commande est trop longue pour mon pauvre systeme (cygwin, mais ca doit etre la meme chose sur un vrai unix). Je pourrais le faire avec


find . -max-depth 1 -name "*.truc" -o -name "*.chose" -exec mv {} repertoire \;

 
Probleme: ca va creer 2000 fois un processus "mv" et ca va etre lourd. J'aurais bien voulu utiliser "xargs" pour donner a chaque "mv" non pas 1, mais 50 fichiers a deplacer (avec "xargs -n 50" ). Sauf que le parametre "repertoire" a mettre a la fin m'empeche d'avoir une solution directe. Bien sur je pourrais faire un script a la place de "mv", mais bon je suis sur qu'il y a plus simple)

Reply

Marsh Posté le 28-03-2003 à 12:47:32   

Reply

Marsh Posté le 28-03-2003 à 13:00:22    

kenshiro182 a écrit :

Bonjour,
 
J'ai un probleme simple: j'ai un repertoire dans lequel je veux deplacer tous les fichiers .truc et .chose. Sauf qu'ils sont trop nombreux, et si je fais


mv *.truc *.chose repertoire

 
la ligne de commande est trop longue pour mon pauvre systeme (cygwin, mais ca doit etre la meme chose sur un vrai unix). Je pourrais le faire avec


find . -max-depth 1 -name "*.truc" -o -name "*.chose" -exec mv {} repertoire \;

 
Probleme: ca va creer 2000 fois un processus "mv" et ca va etre lourd. J'aurais bien voulu utiliser "xargs" pour donner a chaque "mv" non pas 1, mais 50 fichiers a deplacer (avec "xargs -n 50" ). Sauf que le parametre "repertoire" a mettre a la fin m'empeche d'avoir une solution directe. Bien sur je pourrais faire un script a la place de "mv", mais bon je suis sur qu'il y a plus simple)


 
non pas du tout pacequ'un seul tourne à la fois...
donc ca va pas te saturer la machine, ca va sans doute faire monter ta charge CPU à 60-70% mais c'est tout...


---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 28-03-2003 à 13:57:59    

vimaster a écrit :


non pas du tout pacequ'un seul tourne à la fois...
donc ca va pas te saturer la machine, ca va sans doute faire monter ta charge CPU à 60-70% mais c'est tout...


Ben le systeme il va passer son temps a lancer des processus qui font une tache simple. Lancer un processus a un cout, en lancer 2000 c'est lourd.

Reply

Marsh Posté le 28-03-2003 à 14:47:08    

kenshiro182 a écrit :


Ben le systeme il va passer son temps a lancer des processus qui font une tache simple. Lancer un processus a un cout, en lancer 2000 c'est lourd.


 
sur des alpha 800 256Mo donc pas bien puissant du tout...
 
on fait ca pendant la production mensuelle pour archiver les log et en plus dans la clause exec on fait en plus du move un compress et ca surcharge pas du tout (enfin dans des limites tres raisonables nos machines) et ca tourne en pleine production et pour l'autre partie pendant la coture financiere mensuelle qui elle fait des taches lourdes sur les DATABASES et on sature jamais les machines.
 
pourtant Patrol (monitoring) est reglé sur un seuil d'alerte à 75% de CPU
 
 
donc franchement tu as rien a craindre de chez rien à craindre
 
en treme de nombre de fichiers on doit avoir environ 75 jobs par machines/nuits donc autant de logs * 31 jours....
2300et quelques fichiers par machines à deplacer/compresser...
 
environ 13000 fichiers donc tu vois...ça craint rien


Message édité par vimaster le 28-03-2003 à 14:52:17

---------------
I love vi editor. it's the best one.
Reply

Marsh Posté le 28-03-2003 à 14:49:06    

kenshiro182 a écrit :

Bonjour,
 
J'ai un probleme simple: j'ai un repertoire dans lequel je veux deplacer tous les fichiers .truc et .chose. Sauf qu'ils sont trop nombreux, et si je fais


mv *.truc *.chose repertoire

 
la ligne de commande est trop longue pour mon pauvre systeme (cygwin, mais ca doit etre la meme chose sur un vrai unix).


Alors la, ca m'etonnerait beaucoup...

Reply

Marsh Posté le 28-03-2003 à 15:00:27    

rsync ?

Reply

Marsh Posté le 28-03-2003 à 17:39:24    

Code :
  1. find . -max-depth 1 -name "*.truc" -o -name "*.chose" -exec mv {} repertoire \;


Cree un seul processus à la fois  
 
Sinon tu as la possibilité de faire

Code :
  1. for fichier_a_la_con in $( ls *bidule *truc )
  2. do
  3. echo -e "On deplace : $fichier_a_la_con \n"
  4. mv $fichier_a_la_con rep/
  5. done


 
 
Correction ( merci au post suivant )


Message édité par becket le 28-03-2003 à 17:54:58
Reply

Marsh Posté le 28-03-2003 à 17:43:21    

becket a écrit :

Code :
  1. find . -max-depth 1 -name "*.truc" -o -name "*.chose" -exec mv {} repertoire \;


Cree un seul processus à la fois  
 
Sinon tu as la possibilité de faire

Code :
  1. for $fichier_a_la_con in $( ls *bidule *truc )
  2. do
  3. echo -e "On deplace : $fichier_a_la_con \n"
  4. mv $fichier_a_la_con rep/
  5. done


 


 
for fichier_a_la_con in $( ls *bidule *truc )
do
echo -e "On deplace : $fichier_a_la_con \n"
mv $fichier_a_la_con rep/
done  
 
avec le $ ca marche pas  ;)

Reply

Marsh Posté le 28-03-2003 à 17:55:17    

faute de frappe :-)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed