[Linux-31] Renommer de fichiers

Claude Micouin mlnglst at free.fr
Mar 26 Aou 00:05:30 CEST 2014


Le dimanche 24 août 2014 à 21:31 +0200, d.roques at ovh a écrit :
> Bonjour
> J'ai une série de photos originales
> J'en ai fait une copie. J'ai renommé à ma guise.
> J'ai  réduit la taille,
> Et ZUT: les fichiers ont été écrasés. (je pensais avoir 2 séries 
> d'images, mais l'adressage des répertoires n'a pas fonctionné comme je 
> le voulais)
> 
> J'ai maintenant 2 series de photos
> A) taille et nom originaux
> B) petite taille et nom actualisé.
> 
> J'aimerais pouvoir donner aux clichée originaux (grande taille) les noms 
> des nouveaux (taille réduite)
> 
> Est-il possible de placer le listing des images réduite dans un fichier 
> (par exemple liste.txt), et de demander que le premier fichier (grande 
> taille) soit renommé en utilisant le nom figurant sur la première ligne 
> du fichier "liste.txt" et ainsi de suite pour toutes les images????

Bonsoir.
J'avais eu un cas de renommage à partir d'une liste.
Un de clé de la solution est l'utilisation de la commande paste

Je te fais passer une copie de la question et de la réponse.
Elle devrait convenir pour ce que tu veux faire.


"""""""""""""""""""""""""""""""""""""""""""""""""""""""
Q:  Je voudrais renommer des fichiers d'un répertoire en en fonction
d'une liste 
> contenue dans un fichier.
>       Par exemple, dans le répertoire Dossier j'ai :
> fichier1 fichier2 fichier3 fichier4 fichier5
>       et dans le fichier liste-nom j'ai :
> fraise
> pomme
> banane
> poire
> abricot
>
>         et je voudrais que fichier1 s'appelle fraise, fichier2 
> s'appelle pomme, etc

R : Ah, un peu de remue-méninges :-)

cd Dossier
ls -1 | paste -d' ' - ../liste-nom |grep -v '^ \| $' | xargs -l1 echo mv

 ls -1     liste les fichiers un par ligne
 paste     colle côte à côte les lignes en réponse à ls -1 et celles
           venant du fichier liste-nom, séparées par un espace
 grep      supprime les lignes commençant ou se terminant par un espace
           si le nombre de fichiers diffère du nombre de lignes dans
           liste_nom
 xargs     exécute la commande qui suit, pour chaque ligne (-l1)
           (supprimer "echo" pour renommer les fichiers)

Et ouala. Marche pas si les noms de fichiers contiennent des espaces,
idem pour le contenu de liste-nom.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""

@+
-- 
Claude Micouin <mlnglst at free.fr>




Plus d'informations sur la liste de diffusion Linux-31