Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1947 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script ajout d'une extension sur plusieurs fichier

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Script ajout d'une extension sur plusieurs fichier

n°1396649
matthieu_7​4
Posté le 27-10-2016 à 14:25:06  profilanswer
 

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

mood
Publicité
Posté le 27-10-2016 à 14:25:06  profilanswer
 

n°1396650
o'gure
Modérateur
Multi grognon de B_L
Posté le 27-10-2016 à 14:37:51  profilanswer
 

rename


---------------
Ton Antoine commence à me les briser menus !
n°1396655
matthieu_7​4
Posté le 27-10-2016 à 15:20:00  profilanswer
 

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

n°1396656
Fork Bomb
Obsédé textuel
Posté le 27-10-2016 à 15:29:08  profilanswer
 

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 - Ta mère est tellement conne qu’elle passe pas le test de Turing.
n°1396704
watael
Posté le 28-10-2016 à 15:28:18  profilanswer
 

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

n°1396707
o'gure
Modérateur
Multi grognon de B_L
Posté le 28-10-2016 à 15:42:48  profilanswer
 

watael a écrit :

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



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

---------------
Ton Antoine commence à me les briser menus !
n°1396722
francoisp3​1
Posté le 28-10-2016 à 18:25:17  profilanswer
 

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
n°1396731
watael
Posté le 28-10-2016 à 20:33:39  profilanswer
 

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.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Script ajout d'une extension sur plusieurs fichier

 

Sujets relatifs
un script php en crontab retourne un message videScript Clonezilla
script qui se bloque au bout de quelque minutePasserelle Ubuntu avec plusieurs sous réseaux
[Bash] Restreindre sed ou awk à une colonne d'un fichier csvscript - read file, locate lines, replace part of line
[Shell .sh] Copier des lignes dans un fichierScript synology
script onduleur nutGénérer un fichier channels.conf pour VLC (TNT)
Plus de sujets relatifs à : Script ajout d'une extension sur plusieurs fichier



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR