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 13/10/2012, à 16:35

weezixx

[Résolu] Renommer en additionnant

Bonjour,

j'ai des musiques venant d'un cd, et donc ça donne track 1, track 2, …

comme c'est le 2e cd j'aurai aimé que ça suive dans l'ordre du 1er …

Le 1er va de 1 à 28, donc j'aurai voulu que ça suive avec track 29, track 30 etc

et le tout en ligne de commande si possible ^^

J'ai imaginé qu'on puisse isolé le chiffre et faire une simple addition, track {1+28}, track {2+28}, …

J'espère que vous me suivez toujours ^^

Merci

Dernière modification par weezixx (Le 13/10/2012, à 17:48)

Hors ligne

#2 Le 13/10/2012, à 17:01

nesthib

Re : [Résolu] Renommer en additionnant

Tu ne donnes pas assez de détails pour qu'on te donne une réponse complète (notamment sur la localisation des fichiers du second CD). Admettons que les pistes du CD1 soient dans ./CD1/ et celles du CD2 dans ./CD2/
Admettons aussi que tu utilises une version récente de bash (ex. 4.2) et que tes fichiers n'ont pas d'extension (s'il y en a une il suffira d'une ou deux étapes supplémentaires)

for fichier in CD2/*
do
    numero="${fichier##* }"
    nouveau_fichier="${fichier% *} $((28+${numero}))"
    echo mv "${fichier}" "${nouveau_fichier}"
done
echo mv ./CD2/* ./CD1/

supprime les « echo » pour effectuer le déplacement une fois que tu as confirmé que ça fonctionne


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#3 Le 13/10/2012, à 17:18

weezixx

Re : [Résolu] Renommer en additionnant

Ça me pose en effet des soucis au niveau de l'extension :

bash: 28+10.wav : erreur de syntaxe : opérateur arithmétique non valable (le symbole erroné est ".wav")

Hors ligne

#4 Le 13/10/2012, à 17:21

nesthib

Re : [Résolu] Renommer en additionnant

D'où l'importance de donner tous les détails de son problème wink

remplace les lignes 3 et 4 de ma commande précédente par :

    numero="${fichier##* }"
    numero="${numero%.wav}"
    nouveau_fichier="${fichier% *} $((28+${numero})).wav"

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#5 Le 13/10/2012, à 17:31

weezixx

Re : [Résolu] Renommer en additionnant

Ça marche super !

Mais j'ai une question, on aurait pas pu faire juste trouver le numéro du fichier (avec une regex) et en lui ajoutant 28 et tout ça en boucle ?

Hors ligne

#6 Le 13/10/2012, à 17:37

nesthib

Re : [Résolu] Renommer en additionnant

Tu peux faire ça en zsh :

zmv -n 'CD2/(*) ([0-9]*).wav' 'CD2/$1 $(($2+28)).wav'

(enlève le -n pour appliquer la commande)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#7 Le 13/10/2012, à 17:39

weezixx

Re : [Résolu] Renommer en additionnant

tu peux brièvement m'expliquer la fonction de #, ##, % que tu ma donné pour la boucle ?

Merci encore ;-)

Hors ligne

#8 Le 13/10/2012, à 17:45

nesthib

Re : [Résolu] Renommer en additionnant

Je t'encourage à lire le man de bash :

man bash

à la section « Parameter Expansion », une fois dans le man :

/Parameter Expansion[entrée]

wink

NB. en gros c'est pour retravailler le texte contenu dans une variable.
NB2. pense à modifier ton premier message pour ajouter [résolu] au début du titre

Dernière modification par nesthib (Le 13/10/2012, à 17:45)


GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne