#1 Le 10/11/2014, à 13:59
- jean-luc5629
Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Bonjour;
J'arrive à le faire manuellement en ligne de commande :
1: je renomme le mkv ou l'avi avec le nom FR
2: je crée un lien nommé lien du mkv ou de l'avi renommé
3: je renomme le lien avec le nom d'origine du mkv ou de l'avi
Je voudrais automatiser une partie de cette tâche avec un script et de façon récursive maxdepth 2
Je crée manuellement un fichier sans extension du nom FR que prendra ensuite le mkv ou l'avi (là je n'ai pas le choix que de le faire à la mano!!) dans chaque dossier.
Il faudrait que le script récupère donc le nom FR et renomme l'avi ou le mkv ou mp4 tout en mémorisant le nom d'origine du mkv ou de l'avi et ce pour créer un lien ayant le nom d'origine du fichier et pointant sur le fichier renommé FR; et ce dans tous le dossier et sous-dossier de stockage.
Exemple de contenu de dossier :
Avant renommage :
Après renommage (ce que je désire obtenir) :
Je ne vois pas trop comment faire ceci en sript..et de façon récursive
Edit : De plus il faudrait que ce script ne s'exécute pas dans un dossier contenant un fichier avec l'extension : .metathumb et qu'il ne s'exécute que dans les dossiers ou le fichier sans extension existe.
Et de plus j'ai plein d'espaces dans le nom des dossiers ou se situent ces fichiers !!
J'ai essayé ça :
for D in `find /home/torrents -maxdepth 3 -type d`
do
cd $D
#mes commandes
done
Mais avec les espaces dans le nom des dossiers, ça ne le fait pas !!!
Merci
Dernière modification par jean-luc5629 (Le 12/11/2014, à 16:44)
Hors ligne
#2 Le 10/11/2014, à 20:34
- pingouinux
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Bonsoir,
Essaye ceci
while read D
do
cd "$D"
#mes commandes
done < <(find /home/torrents -maxdepth 3 -type d)
Hors ligne
#3 Le 10/11/2014, à 20:41
- jplemoine
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Mais avec les espaces dans le nom des dossiers, ça ne le fait pas !!
Essaies en mettant entre guillements
for D in `find /home/torrents -maxdepth 3 -type d`
do
cd "$D"
#mes commandes
done
Pareil pour tes commandes
Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.
Hors ligne
#4 Le 11/11/2014, à 10:45
- jean-luc5629
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Bonjour;
Merci à vous deux, ça devrait me débloquer pour le reste.
J'attends pour mettre en résolu, au cas ou quelque chose d'autre me coincerait.
Hors ligne
#5 Le 11/11/2014, à 12:16
- pingouinux
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Attention : S'il y a des espaces dans les noms des répertoires, la commande en #3 ne marche pas
Hors ligne
#6 Le 11/11/2014, à 22:46
- jean-luc5629
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
Attention : S'il y a des espaces dans les noms des répertoires, la commande en #3 ne marche pas
Re;
De toute façon, c'est l'autre que j'ai testé, et ça fonctionne, je rentre bien dans tous mes dossiers même avec espaces.
Par contre je me retrouve coincé avec ceci :
h=$(find "$D" -iname '*.mkv' -exec basename {} \;)
j=`echo "$h" |cut -d "." -f1`
echo "$h"
xxxxxx.FRENCH.BDDRip.x264-pml.mkv
echo "$j"
xxxxxx
J'ai un autre soucis avec certains fichiers pour récupérer leur nom sans l'extension du fait que dans le nom d'origine il y a plusieurs "."
En réalité je voudrais que , echo $j me donne "xxxxxx.FRENCH.BDDRip.x264-pml" et non "xxxxxx".
j=`echo "$h" |cut -d "." -f1` ne fonctionne qu'avec un fichier classique : nom.extension
Merci.
Hors ligne
#7 Le 12/11/2014, à 05:28
- pingouinux
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
$ h=xxxxxx.FRENCH.BDDRip.x264-pml.mkv
$ j=${h%.*}
$ echo "$j"
xxxxxx.FRENCH.BDDRip.x264-pml
Hors ligne
#8 Le 12/11/2014, à 16:41
- jean-luc5629
Re : Script pour créer lien prenant le nom d'origine,ficher renommé[Résolu]
$ h=xxxxxx.FRENCH.BDDRip.x264-pml.mkv $ j=${h%.*} $ echo "$j" xxxxxx.FRENCH.BDDRip.x264-pml
Merci;
J'ai réussi à faire ce que je voulais, vu mon expérience en bash, c'est sans doute un peu brut de fonderie..mais ça fonctionne :
while read D
do
cd "$D"
##### cherche les dossiers a modifier
if [ -f *.fra ]
then
if ! [ -f *.metathumb ]
then
## cherche l'extension video
if [ -f *.avi ]
then
ext=avi
else
if [ -f *.mkv ]
then
ext=mkv
else
if [ -f *.mp4 ]
then
ext=mp4
fi
fi
fi
### recherche nom et renomme et lien ancien nom
e=$(find "$D" -iname '*.fra' -exec basename {} \;)
f=${e%.*}
h=$(find "$D" -iname *.$ext -exec basename {} \;)
j=${h%.*}
mv "$j".$ext "$f".$ext
ln -s "$f".$ext "$j".$ext
##### recherche sous-titres les renomme et lien ancien nom
if [ -f *.idx ]
then
mv "$j".idx "$f".idx
ln -s "$f".idx "$j".idx
fi
if [ -f *.sub ]
then
mv "$j".sub "$f".sub
ln -s "$f".sub "$j".sub
fi
###
fi
fi
done < <(find /home/torrents/* -maxdepth 3 -type d)
Encore merci.
Hors ligne