Script ajout d'une extension sur plusieurs fichier

Script ajout d'une extension sur plusieurs fichier - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 27-10-2016 à 14:25:06    

Bonjour à vous tous,
 
Je suis entrain d'écrire un bout de script qui tournera en cron pour copier des fichiers sur une machine distante puis pour ajouter une extension.
Je n'arrive pas à faire un script pour ajouter une extension à tous les fichiers du répertoire.
Voici mon début de bout de code:
 
#creation d'un backup des fichiers
ssh -n $host mv -f $directory/* $directory/backup/
 
# copie des fichiers du serveur vers le serveur distant
 
scp $directory/* $host:$directory
 
#Ajout de l'extension .html aux fichiers.
 
ssh -n $host for i in $directory/* ; do mv $i `basename $i `.html; done
 
retvalue=$?
 
if [ $retvalue = 0 ]; then
        echo "Done"
else
        echo "Could not copy"
        echo "Return value: $retvalue"
fi
echo ""
 
Et c'est la ligne en gras qui merde, pourriez-vous m'aider?
 
Merci d'avance

Reply

Marsh Posté le 27-10-2016 à 14:25:06   

Reply

Marsh Posté le 27-10-2016 à 14:37:51    

rename


---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 27-10-2016 à 15:20:00    

Oui, bonne idée, mais comment faire du recursif? peux tu m'aider?
 
Merci d'avance

Reply

Marsh Posté le 27-10-2016 à 15:29:08    

matthieu_74 a écrit :

Oui, bonne idée, mais comment faire du recursif? peux tu m'aider?
 
Merci d'avance


Find.


---------------
Décentralisons Internet-Bépo-Troll Bingo - "Pour adoucir le mélange, pressez trois quartiers d’orange !"
Reply

Marsh Posté le 28-10-2016 à 15:28:18    

matthieu_74 a écrit :

Oui, bonne idée, mais comment faire du recursif?

en regardant le man de la commande indiquée !?
 

Citation :

For example, to rename all files matching "*.bak" to strip the extension, you might say
 
               rename 's/\e.bak$//' *.bak

Reply

Marsh Posté le 28-10-2016 à 15:42:48    


T'entends quoi par récursion toi ?  [:crapulax]  

[ven. 16/10/28 15:40 CEST][pts/0]
<oggy@aoi:~/Documents/tmp/rename>%  touch toto.back folder/tata.back
[ven. 16/10/28 15:40 CEST][pts/0]
<oggy@aoi:~/Documents/tmp/rename>%  tree
.
├── folder
│   └── tata.back
└── toto.back
 
1 directory, 2 files
[ven. 16/10/28 15:40 CEST][pts/0]
<oggy@aoi:~/Documents/tmp/rename>%  rename 's/.back$//' *.back
[ven. 16/10/28 15:40 CEST][pts/0]
<oggy@aoi:~/Documents/tmp/rename>%  tree
.
├── folder
│   └── tata.back
└── toto


Tips: zut, il a pas été voir dans le répertoire folder


Message édité par o'gure le 28-10-2016 à 15:44:26

---------------
Relax. Take a deep breath !
Reply

Marsh Posté le 28-10-2016 à 18:25:17    

find . -type f -name "*.e" -exec rename 's/.e/.old_e/' {} \;


permet pout tout les sous repertoires d appliquer la commande rename sur caque fichier trouves qui avant le rename s apelle *.e telle que le patern est defini  
ici .e devient .old_e
 
en francais :

 
find . -type f -name "*.e" -exec rename 's/.e/.old_e/' {} \;
trouve toutfichier denom *.e -execute rename 'substitue/.e/.p/' surfichiertrouvé \;


notes que ca touche pas les fichiers *.p  donc pas de risques d erreur
 
 

francois@h2g2:~/Downloads$ mkdir tmp
francois@h2g2:~/Downloads$ mkdir tmp/{a,b,c}
francois@h2g2:~/Downloads$ touch tmp/{a/b.e,b/c.e,c/d.e}
francois@h2g2:~/Downloads$ touch tmp/{a/b.p,b/c.p,c/d.p}
francois@h2g2:~/Downloads$ find . -type f -name "*.e" -exec rename 's/.e/.old_e/' {} \;  
francois@h2g2:~/Downloads$ ls -Rtl tmp
tmp:
total 12
drwxr-xr-x 2 francois francois 4096 Oct 28 18:21 b
drwxr-xr-x 2 francois francois 4096 Oct 28 18:21 a
drwxr-xr-x 2 francois francois 4096 Oct 28 18:21 c
 
tmp/b:
total 0
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 c.p
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 c.old_e
 
tmp/a:
total 0
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 b.p
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 b.old_e
 
tmp/c:
total 0
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 d.p
-rw-r--r-- 1 francois francois 0 Oct 28 18:18 d.old_e
francois@h2g2:~/Downloads$ rm -rf tmp
francois@h2g2:~/Downloads$


Message édité par francoisp31 le 28-10-2016 à 18:28:38
Reply

Marsh Posté le 28-10-2016 à 20:33:39    

Citation :

T'entends quoi par récursion toi ?

moi ?
 
vu la commande initiale, l'exemple colle parfaitement.
 
la descente dans les sous-répertoires n'est pas nécessairement récursive (ce qui est le cas d'une fonction s'appelle elle-même), elle pourrait tout à fait, dans une boucle, être itérative.

Reply

Sujets relatifs:

Leave a Replay

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