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 30/08/2011, à 17:57

Takezo

[résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

salut,

je cherche à rajouter un mot dans une centaine de fichiers d'un répertoire.
Pratiquement, je voudrais rajouter -DESSINS ANIMES- dans un répertoire contenant tous les dessins animé en .avi de mon fils :

Exemple:

supertoto.avi --> supertoto-DESSINS ANIMES-.avi

et je ne sais comment faire ...

merci !

Dernière modification par Takezo (Le 30/08/2011, à 23:11)


---------------
Si ou pa sav...mandé !

Hors ligne

#2 Le 30/08/2011, à 18:18

Levi59

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

une petite commande dans le terminal

cd /CheminVers/Dossier/Vidéos           ##Mettre le bon chemin
for VID in *.avi; do mv "${VID}" "${VID%.*}-DESSINS ANIMES-.avi"; done

Dernière modification par Levi59 (Le 30/08/2011, à 18:19)

Hors ligne

#3 Le 30/08/2011, à 18:21

poum

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

Saisir dans le répertoire la commande suivante:

for i in *.avi; do mv $i `basename $i .avi`-DESSIN\ ANIMES-.avi; done

Explication: pour tout fichier avi,
renommer en "nom sans .avi" suivi de -DESSIN ANIME-.avi

Voilà

Dernière modification par poum (Le 30/08/2011, à 18:21)


Because rules matter !
http://philippe.poumaroux.free.fr

Hors ligne

#4 Le 30/08/2011, à 18:39

Levi59

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

poum a écrit :

Saisir dans le répertoire la commande suivante:

for i in *.avi; do mv $i `basename $i .avi`-DESSIN\ ANIMES-.avi; done

Explication: pour tout fichier avi,
renommer en "nom sans .avi" suivi de -DESSIN ANIME-.avi

Voilà

Pourquoi faire appel a basename alors qu'une simple subtitution suffit?
En plus il faut utiliser $(commande) au lieu de `commande`

Hors ligne

#5 Le 30/08/2011, à 18:44

Takezo

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

les 2 fonctionnent, merci !

<commentaire>arrf, j'ai encore du boulot pour les scripts...</commentaire>


---------------
Si ou pa sav...mandé !

Hors ligne

#6 Le 30/08/2011, à 19:00

Levi59

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

n'oublie pas le résolu wink

Hors ligne

#7 Le 30/08/2011, à 19:25

sputnick

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

houlà, ya plus simple :

installer prename (ou rename selon les distribsI) et ensuite il suffit de faire :

prename 's/\.avi/-DESSINS_ANIMES.avi/' .*avi

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#8 Le 01/09/2011, à 20:11

Takezo

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

Levi59 a écrit :

n'oublie pas le résolu wink

Salut, presque résolu...
j'ai voulu faire de me pour des fichiers mp3 et il me semble que ça coince à cause du nom de fichier:

Exemple our le titre :
01-louis armstrong-hobo you can't ride this train.mp3

paul@case:~/partage virtuel/jazz$ for i in *.mp3; do mv $i `basename $i`-JAZZ-.mp3; done
basename: opérande supplémentaire «you»
Saisissez « basename --help » pour plus d'informations.
mv : option invalide -- 'J'

Une idée ?
Merci


---------------
Si ou pa sav...mandé !

Hors ligne

#9 Le 01/09/2011, à 20:25

aduxas

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

Ah, les blancs dans les noms de fichier!

basename fichier avec blanc

C'est comme si tu appelais basename avec trois arguments.  Il faut entourer le nom d'un tel fichier avec des "

Hors ligne

#10 Le 01/09/2011, à 20:27

Levi59

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

Celui là ne fonctionne pas?

for VID in *.avi; do mv "${VID}" "${VID%.*}-DESSINS ANIMES-.avi"; done

edit
oui c'est les espaces... et comme je l'ai dis, on utilis plus `commande` mais $(commande)

Dernière modification par Levi59 (Le 01/09/2011, à 20:30)

Hors ligne

#11 Le 01/09/2011, à 20:34

Takezo

Re : [résolu] find -iname "*.avi" et rajouter à tous les fichiers un nom

oui ta commande fonctionne ... wink


---------------
Si ou pa sav...mandé !

Hors ligne