Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 :

266755ori1.png

Après renommage (ce que je désire obtenir) :

417215ori2.png


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]

jean-luc5629 a écrit :

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.
smile

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]

pingouinux a écrit :

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]

pingouinux a écrit :
$ 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