Précédent   Forum des professionnels en informatique > Systèmes > Autres systèmes > Unix
Unix Forum d'entraide sur les systèmes Unix et dérivés (*BSD, AIX, etc.). Avant de poster ->F.A.Q BSD F.A.Q. Aix
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 16/09/2011, 21h36   #1
Futur Membre du Club
 
Inscription : août 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 35
Points : 16
Points : 16
Par défaut un script pour Lister, Modifier, remplacer des noms de fichiers pour un upload?

Bonjour, voici mon problème:

J'ai mon programme principale dans un répertoire 1:

Code :
1
2
3
ls chemin1/rep1/
fichier1.f90 fichier1.f90~ fichier1.o fichier2.f90 .... etc...
J'ai les fichiers que j'ai modifié dans un autre répertoire:
Code :
1
2
3
ls chemin2/rep2/
fichier1_modified.f90 fichier2_modified.f90 .... etc...
Tout les fichiers du répertoire 1 ne se trouvent pas tous dans le répertoire 2 par contre ils auront les même noms avec "modified" à la fin.

Ce que j'aimerais c'est automatiquement:
1- copier les fichier du répertoire 1 de fichier1,f90 à fichier_old.f90 au cas ou l'upload ne fonctionnerait pas.

2- copier tout les fichiers présents dans le repertoire 2 vers le répertoire 1. fichier1_modified.f90 remplacerait donc fichier1.f90

3- faire un makefile et lancer (mais ça je sais faire c'est bon

Donc pour les étapes 1 et 2, comme je ne suis pas très familier des scipts shell je ne sais pas trop comment tronquer mes chaines de carractères pour modifier les noms.

Sauriez-vous comment procéder simplement pour les étapes 1 et 2 en particulier pour que le bon fichier remplace le bon et pour modifier les noms ?

merci beaucoup de votre aide
shadock0 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/09/2011, 16h38   #2
Membre régulier
 
Inscription : mars 2009
Messages : 321
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 321
Points : 93
Points : 93
Bonjour,

Suite à ta demande je t'ai écrit un petit script qui te permettra de sauvegarder tes fichiers et de dupliquer les fichiers de rep1 vers rep2 avec leurs bons noms

A mon avis on peu faire autrement voir peut être plus simple mais cette solution fonctionne par contre je suis preneur pour une solution plus simple

Le programme:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/bin/ksh

#Debut de la procedure

#Sauvegarde du repertoire avant Upload
tar -cvf /sauvegarde/savfichier.tar /tmp/rep1/fichier*

#Supression du fichier d'analyse pour copier les fichiers
rm /tmp/lstfic

#Boucle pour création du fichier d'analyse des fichiers
for i in `ls -al|grep fichier|awk '{print $9}'`
do
if [ $? -eq 0 ]
then
#Constitution du fichier d'analyse
echo $i 1>>/tmp/lstfic
fi
done

#Boucle pour duplication des fichiers
for v in `cat /tmp/lstfic|grep fichier|awk -F"_" '{print $1}'`
do
if [ $? -eq 0 ]
then
#Copie des fichiers $v_modified.f90 du répertoire 2 vers le répertoire 1 et rennomage des fichiers en $v.f90
cp '/tmp/rep2/'$v'_modified.f90' /tmp/rep1/$v.f90
fi
done

#Fin de la procedure

#On passe au Makefile
A+
AAWOOPY56 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/09/2011, 21h47   #3
Futur Membre du Club
 
Inscription : août 2011
Messages : 35
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 35
Points : 16
Points : 16
Merci, j'ai fais comme ça finalement:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/sh

upload=path1/*_modified.f90
pathbase=path2/src

for mod_file in $upload
do
    base_name=$(basename ${mod_file});
    base_part=${base_name%_modified*};
    target_file=$pathbase\/${base_part}.f90;
    if [ -f "$target_file" ]
    then
	save_file=$pathbase\/${base_part}_old.f90;
	cp ${target_file} ${save_file};
	cp ${mod_file} ${target_file};
    fi
done
shadock0 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 02h11.


 
 
 
 
Partenaires

Hébergement Web