hello
jeune newbie, je souhaite ecrire un script qui traite / renomme les fichiers de toute une arborescence.
Pas évident de comprendre tous les scripts et commandes que j'ai trouvé dans la recherche...
mon souhait:
- mettre l'extension - le suffixe ;-) - des fichiers en minuscule
- remplacer les espaces par des _
j'en suis à :
#!/bin/bash
find . -name *
et apres... je sais qu'il s'agit d'un 'mv' quelque chose
y a-t-il une bonne ame pour m'expliquer ?
-> récupérer la liste des fichier : c'est le 'find' qui le fait, OK
-> comment utiliser cette liste
-> comment selectionner / convertir le suffixe en minuscule ( lowercase ? )
-> comment remplacer les espaces par _ ( ereg ? )
merci de vos réponses...
# Plus simple avec rename
Posté par niol (site web personnel) . Évalué à 2.
$ rename 's/JPG/jpg/' `find .`
$ rename 's/\ /\_/' `find .`
[^] # Re: Plus simple avec rename
Posté par Mike_M . Évalué à 1.
rename 's/JPG/jpg/;s/\ /_/' `find .`
Question optimisation ;)
# Un debut
Posté par tuxyl . Évalué à 1.
Je connais deux possibilités :
*Avec find tu peux executer une commande pour chaque fichier trouvé avec une commande du genre : find -name "*" -exec macommande {} \;
{} correspond au parametre trouvé par find
*Si tu veux utiliser la liste complete d'un coup, l' utilisation des backquotes est pas mal : (ce qui est entre backquote est interprete comme une commande)
macommande `find - name "*"`
-> comment selectionner / convertir le suffixe en minuscule ( lowercase ? )
Un petit exemple pour etre sur de comprendre la question serait bienvenue
-> comment remplacer les espaces par _ ( ereg ? )
rename s/ /_/ mes fichiers
J ai pas testé mais en gros on pourrait avoir un truc du genre :
rename s/ /_ `find -name "*"`
# un truc comme ca ?
Posté par Pascal Terjan (site web personnel) . Évalué à 2.
[^] # Re: un truc comme ca ?
Posté par cho95ubs . Évalué à 1.
j'essaie ca dès ce soir.
PS: je suis halluciné par votre réactivité ! :D
[^] # Re: un truc comme ca ?
Posté par cho7 (site web personnel) . Évalué à 2.
#!/usr/bin/perl -w
my $fic = $ARGV[0];
my $ext = "";
if ($fic =~ m/(.+)\.(.+)/)
{
$fic =~ s/\ /_/g;
$fic =~ m/(.+?)\.(.+)/;
$fic = $1;
$ext = $2;
$ext =~ tr/A-Z/a-z/;
print $fic.".".$ext;
}
Bon ca te converti juste le nom du fichier passé en parametre, donc après faut le donner a manger a find...
[^] # Re: un truc comme ca ?
Posté par liberforce (site web personnel) . Évalué à 2.
mv "$f" "${f// /_}"
Voir la section "Substring Replacement" de http://www.tldp.org/LDP/abs/html/string-manipulation.html(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.