Pages : 1
#1 Le 12/10/2009, à 11:28
- florap
Tri de noms de fichier en hexadecimal [resolu]
Bonjour à tous, comme vous êtes très forts ici, j'ai des questions d'ordre techniques.
Je vous explique :
J'ai une sacrée collection de fichiers audio en .wav dont les noms sont en hexadecimal, l'ennui, c'est qu'ils sont pas dans l'ordre ), vu que les lettres sont triées avant les numéros dans le gestionnaire de fichier (et l'ordre est important, car il s'agit d'une série de dialogues).
- existe t-il un moyen de changer le tri pour classer les numeros avant les lettres de A-Z ? (j'ai regardé, mais on peut juste trier les noms par nom, type, date etc...)
- y'a pas un moyen de renommer tous les noms de fichiers en les reconvertissant d'un nom hexadecimal à un nom en chiffre ? ainsi, le tri serait correct.
je pense à un script, mais là, je suis totalement néophyte...
merci de votre aide~
Mon problème n'est pas très important, je me pose juste des questions...
Dernière modification par florap (Le 13/10/2009, à 11:18)
Hors ligne
#2 Le 12/10/2009, à 11:42
- Hoper
Re : Tri de noms de fichier en hexadecimal [resolu]
Tu peux nous donner un extrait d'un "ls -l" histoire qu'on voit mieux a quoi ressemble les noms ?
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#3 Le 12/10/2009, à 11:46
- ZondeR
Re : Tri de noms de fichier en hexadecimal [resolu]
coucou,
j'ai pas tout compris ton soucis. Tu pourrais donner des exemples de tes noms de fichiers 'en hexadecimal'? parce que je vois pas trop ce que c'est qu'un nom de fichier hexadecimal ni ce que tu appelles "classer les numeros avant les lettres de A-Z"
Avec un script, tu peux tout faire mais ça peut demander beaucoup de temps
Hors ligne
#4 Le 12/10/2009, à 11:58
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
Tu peux essayer ce script en perl :
#!/usr/bin/perl
$mon_repertoire="/tmp/a";
@fichiers = `cd $mon_repertoire; ls *.wav`;
foreach (@fichiers) {
($hexa) = $_ =~ /(.*)\.wav/;
$decimal = hex($hexa);
print "Nom hexa : $hexa, nom decimal $decimal\n";
# system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$decimal.wav");
}
Et si le résultat du print est correct, tu décommentes la ligne system et hop !
Dernière modification par oktoberfest (Le 12/10/2009, à 11:59)
#5 Le 12/10/2009, à 12:16
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
merci pour votre aide, voilà, je vous donne un exemple de liste classé dans cet ordre :
0002BF2A.wav
0002BF3E.wav
0002BF5C.wav
0002BF7A.wav
0002BF8E.wav
0002BF20.wav
par exemple, il faudrait que "0002BF20.wav" soit placé avant "0002BF2A.wav"
et merci pour le script oktoberfest, par contre, comment je fais pour l'executer ?? désolée, jsuis nulle...
Hors ligne
#6 Le 12/10/2009, à 12:31
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
Voici une version très très light de perl pour les nulles
Tu ouvres ton éditeur préféré et tu recopies le code. Tu modifies la ligne :
$mon_repertoire="/tmp/a";
Pour mettre le nom du répertoire que tu veux retravailler. Tu sauvegardes ce fichier quelque part...par exemple là où tu as tu tes .wav
Ensuite tu ouvres un shell (Applications | Accessoires | Terminal, de tête) tu fais un :
cd <mon repertoire avec plein de wav dedans>
Et tu tapes :
perl <mon super script perl de la mort>
Et hop !
#7 Le 12/10/2009, à 12:39
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
Un dernier point important :
Une fois la ligne system décommentée, ne lance le script qu'une seule fois !!!!
Sinon la deuxième exécution va te reconvertir des noms en décimal en pensant que c'est de l'hexadécimal et bonjour le bazar !!
#8 Le 12/10/2009, à 13:23
- ZondeR
Re : Tri de noms de fichier en hexadecimal [resolu]
c'est louche. Nautilus trie bizarrement les fichiers en fonction du nom.
il mettra 0002BF2A avant 0002BF20, mais 0002BF0 avant 0002BFA...
@florap: Konqueror ne fait pas ce mélange bizarre et la commande ls non plus. Peut-être que ta solution est de ne pas utiliser nautilus. C'est possible?
Hors ligne
#9 Le 12/10/2009, à 13:57
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
merci mais je comprends pas tout, désoléeeee.
je cree un fichier dans le dossier où y'a les .wav que je veux renommer.
je l'enregistre en quoi ? en .sh ?
je modifie le "/tmp/a" par le chemin du dossier, c'est ça ?
ensuite quand j'ouvre un terminal, après le "cd", je retape le chemin du dossier, c'est ça ?
et après le "perl", je recopie ton script en faisant attention au nom du chemin j'imagine.
merci~~~
Hors ligne
#10 Le 12/10/2009, à 14:02
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
à zonder : j'ai essayé gnome commander et ça classe de la meme maniere, par contre konqueror, je connais pas, j'lai pas trouvé dans la liste "de toutes les applications disponibles"
Hors ligne
#11 Le 12/10/2009, à 14:14
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
je cree un fichier dans le dossier où y'a les .wav que je veux renommer.
je l'enregistre en quoi ? en .sh ?
Le nom du fichier contenant le script n'a aucune importance. Tu peux l'appeller <xx>.pl pour te souvenir qu'il contient du perl mais Linux n'y accorde aucune importance.
je modifie le "/tmp/a" par le chemin du dossier, c'est ça ?
Effectivement tu mets le chemin du dossier contenant ton script.
ensuite quand j'ouvre un terminal, après le "cd", je retape le chemin du dossier, c'est ça ?
Tout à fait.
et après le "perl", je recopie ton script en faisant attention au nom du chemin j'imagine.
Oui.
Tu tapes donc une commande du style :
perl /home/musiques/change_nom.pl
Si en plus tu fais un :
chmod +x /home/musiques/change_nom.pl
Tu pourras exécuter le script en faisant simplement : /home/musiques/change_nom.pl
Le #! en début de script (syntaxe appellée shebang) indique au shell d'utiliser /usr/bin/perl pour exécuter le script
Dernière modification par oktoberfest (Le 12/10/2009, à 14:17)
#12 Le 12/10/2009, à 14:15
- Hoper
Re : Tri de noms de fichier en hexadecimal [resolu]
florap :
Etape par étape :
1) Tu crée un fichier texte sur ton bureau, que tu appelle toto.txt
(on se fiche complètement de la fin du nom, mais tu peux mettre .txt si tu veux)
2) Tu copie, dans ce fichier texte, le script qui t'a été donné
3) tu change la partie /tmp/a pour mettre à la place le chemin complet du répertoire contenant les .wav.. Un truc de genre : /home/ton_login/wav ou je sais pas quoi
4) Tu lance un terminal
5) Tu va "dans" ton bureau :
cd Bureau
6) Tu lance le script :
perl ./toto.txt
Si ca semble fonctioner (les noms qu'il affiche te convienne) tu edite le script et tu enleve le # devant la commande "system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$decimal.wav");"
7) Tu relance le script (UNE SEULE FOIS) cf étape 6.
Edit : grillé
Dernière modification par Hoper (Le 12/10/2009, à 14:15)
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#13 Le 12/10/2009, à 15:35
- ZondeR
Re : Tri de noms de fichier en hexadecimal [resolu]
à zonder : j'ai essayé gnome commander et ça classe de la même manière, par contre konqueror, je connais pas, j'ai pas trouvé dans la liste "de toutes les applications disponibles"
Konqueror est le gestionnaire de fichiers pour KDE. Pour Gnome, c'est nautilus. Tu peux installer konqueror avec synaptic par exemple.
Le classement bizarre de tes fichiers me semble être une particularité de Gnome (un bug?). Je ne crois pas que tu aies absolument besoin de renommer tous tes fichiers. Tu peux probablement te contenter d'utiliser le bon logiciel.
Hors ligne
#14 Le 12/10/2009, à 15:36
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
merci beaucoup, ca marche ! une petite question : qu'est ce qu'il faudrait que je change dans le script pour que ça renomme les fichiers comme ça par exemple : nom decimal-nom hexa
170-000000AA.wav
je voudrais m'y retrouver en gardant le nom hexa d'origine.
Hors ligne
#15 Le 12/10/2009, à 15:44
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
et comment faire pour augmenter le nombres de lignes dans le terminal ? (si mon dossier contient plusieurs centaines de fichiers)
Hors ligne
#16 Le 12/10/2009, à 15:59
- Hoper
Re : Tri de noms de fichier en hexadecimal [resolu]
Je laisse oktoberfest te repondre pour la modification du script.
Par contre, il aura besoin de savoir si tu as déjà lancé le script an ayant enlevé le # (autrement dit le renomage à déja eu lieu) ou pas (simple affichage).
Pour ta question sur le nombre de ligne... elle ne veut pas dire grand chose... Ce script fonctionnera quelque soit le nombre de fichiers.
(enfin... en réalité il semble y avoir une limite a cause de la taille max de la commande 'ls *wav' car xargs n'a pas été utilisé... mais bon... bref)
Cette limite n'a rien a voir avec la taille du terminal.
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#17 Le 12/10/2009, à 16:02
- ZondeR
Re : Tri de noms de fichier en hexadecimal [resolu]
une petite question : qu'est ce qu'il faudrait que je change dans le script pour que ça renomme les fichiers comme ça par exemple : nom decimal-nom hexa
170-000000AA.wav
Je n'y connais rien en PERL, mais à mon vis, tu remplaces la ligne:
system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$decimal.wav");
par la ligne:
system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$hexa_$decimal.wav");
Hors ligne
#18 Le 12/10/2009, à 16:04
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
pour le renommage ou je ne sais quoi, c'est pas grave parce que je crée des copies de dossier.
ensuite je voudrais garder le log qui s'affiche dans le terminal, mais le nombre de lignes dans le terminal est limité, donc les commandes du haut sont effacées.
Hors ligne
#19 Le 12/10/2009, à 16:17
- Hoper
Re : Tri de noms de fichier en hexadecimal [resolu]
Non mais sérieusement...
Il faudrait savoir ce que tu veux la...
Soit tu veux renommer les fichiers (et on a pas arrêter de t'expliquer comment), soit... quoi ? Je comprend pas... a quoi ca va te servir cette liste bidon ? C'est juste la sortie d'un script qui n'a qu'une utilité de test ! (vérfiication avant application)
Si vraiment tu veux sauvegarder cette liste, c'est archi simple, il suffit de rediriger la sortie du scrit dans un fichier texte. Encore une fois j'espère que tu n'a pas enlevé le #, et que donc il n'a encore fait aucune modification (bref, que pour le moment le script n'a servit à rien...) :
perl trucmuche > ~/Bureau/sortie.txt
Et tu aura sur ton bureau un joli fichier texte "sortie.txt" avec la sortie du script, autrement dit tout ce que tu vois défiler dans ton terminal... Sauf que cette liste ne te sert à rien du tout... Bref, pourquoi tu renome pas simplement les fichiers? Le script à été concu pour ça !?
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#20 Le 12/10/2009, à 16:26
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
Bien sur j'ai déjà renommé les fichiers grace à vous, merci encore !
je sais bien que ça sert à rien de garder une liste, c'est juste que je voudrais garder une trace.
Zonder : j'ai essayé le code, ça marche pas...
system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$hexa_$decimal.wav");
Dernière modification par florap (Le 12/10/2009, à 16:38)
Hors ligne
#21 Le 12/10/2009, à 16:56
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
Bien sur j'ai déjà renommé les fichiers grace à vous, merci encore !
je sais bien que ça sert à rien de garder une liste, c'est juste que je voudrais garder une trace.Zonder : j'ai essayé le code, ça marche pas...
system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$hexa_$decimal.wav");
Et oui c'est le piège classique dans Perl !! Le caractère _ peut être utilisé dans un nom de variable.
Donc ici on cherche la variable $hexa_ .... pas bon. Et il faut (par exemple car il y a une autre méthode) backslasher (brk l'anglicisme) le _.
Le bon code est le suivant :
system("mv $mon_repertoire/$hexa.wav $mon_repertoire/$hexa\_$decimal.wav");
#22 Le 12/10/2009, à 22:13
- ZondeR
Re : Tri de noms de fichier en hexadecimal [resolu]
merci Mr oktoberfest
Hors ligne
#23 Le 13/10/2009, à 11:18
- florap
Re : Tri de noms de fichier en hexadecimal [resolu]
merci pour tout~
Hors ligne
#24 Le 13/10/2009, à 11:19
- compte supprimé
Re : Tri de noms de fichier en hexadecimal [resolu]
Un petit [résolu] dans le titre du message pour terminer en beauté.
#25 Le 14/10/2009, à 20:57
- hardball
Re : Tri de noms de fichier en hexadecimal [resolu]
et pourquoi pas en bash ?
i=0;for f in `ls *.wav | sort` ; do ; let i=i+1; mv ${f} ${i}-${f}" ; done
ça te fait l'équivalent de ceci :
mv 0002BF20.wav 1-0002BF20.wav
mv 0002BF2A.wav 2-0002BF2A.wav
mv 0002BF3E.wav 3-0002BF3E.wav
mv 0002BF5C.wav 4-0002BF5C.wav
mv 0002BF7A.wav 5-0002BF7A.wav
mv 0002BF8E.wav 6-0002BF8E.wav
-- Toshiba satelliteA100-335 + Ubuntu Jaunty --
Pour les noobs : Bienvenue ! ici la perséverance vous récompense.
Pour les anciens : Merci à vous de partager votre savoir.
Et vive le perl !
Hors ligne
Pages : 1