[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: un script pour traitement par batch



De mon côté je suis fan de for (chacun son truc ;) :

for fichier in `cat nomliste.txt`; do cp /la/source/du/$fichier /home/mydir; done

en version script c'est plus joli :
#!/bin/bash

for fichier in `cat nomliste.txt`
do
    cp /la/source/du/$fichier /home/mydir
done

à plus

Le 11 mars 2009 16:10, Guy Roussin <guy.roussin@teledetection.fr> a écrit :
Bonjour,

Moi ce que je fais dans ces cas là, c'est que j'utilise mon éditeur de
texte préféré (vi) pour transformer la liste de fichier texte en un script bash
avec un :%s/\(.*\)/cp "\1" \/home\/mydir/

Je rajoute la 1ere ligne à la main :
#!/bin/bash

je rend exécutable et J'exécute le fichier ...

Je sais pas si c'est pertinent mais ça le fait.

Guy

Bernard a écrit :

Bonjour à tous,

Je souhaite copier à part un certain nombre de fichiers choisis dans un répertoire. Sur les 1200 fichiers que contient ce répertoire, j'en ai sélectionné un peu plus de 400 de la liste, et j'ai éliminé les autres... Je les éliminés d'une liste récupérée via 'ls -l > nomliste.txt', et non pas du répertoire ou d'une copie de celui-ci, ce qu'il aurait mieux valu que je fasse. Ce tri sur la liste m'ayant pris plusieurs heures de travail fastidieux, j'espère éviter de devoir le recommencer sur le contenu du répertoire. En fait, comme cette liste représentait déjà une sélection du contenu dudit répertoire, c'est environ 12500 fichiers qu'il me faudrait à nouveau trier.

Comment copier, à partir de cette liste ?   S'il ne s'était agit que d'une ou deux douzaines de fichiers, je n'eusse pas été embarrassé de faire 2 ou 3 douzaines de fois la manip suivante :

cp /mnt/exthd/copié_collé_du_nom_du_fichier.sdm /home/mydir

mais là, avec plus de 400 fichiers, c'est un peu fastidieux à faire ainsi. Alors, d'après ma liste de fichiers (chaque ligne comprenant un fichier avec la commande 'cp' que j'ai ajouté en chaque tête de ligne grâce à une manip dans un tableau OO_calc), comment est-ce que je peux faire un traitement en batch ?

Un problème du même genre s'était posé à moi il y a 3 ou 4 ans, et je l'avais résolu par une petite routine écrite en Pascal (Free Pascal), ce qui avait été possible avec une routine 'for n=x to y do' parce que les noms de fichiers étaient faits de numéros croissants, ce qui n'est pas le cas pour mon problème actuel. En fait, les fichiers à traiter sont composés de chaînes de caractères avec des espaces (ce qui m'a obligé de les inclure entre des ' '), car il s'agit d'un archivage d'e-mails reçus via StarOffice 5.1 et 5.2, sur mon ancien ordi.

Merci d'avance pour toute suggestion pertinente.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.org/fr/FrenchLists
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: