2 votes

Comment renommer plusieurs fichiers avec des noms différents en une seule fois ?

J'ai plusieurs fichiers docx (environ 250 fichiers), chacun avec un nom différent. Je dois renommer tous ces fichiers de manière à ce que le résultat soit que chaque nom de fichier soit un numéro consécutif du fichier précédent, comme suit :

1.docx - 2.docx - 3.docx - etc.

Comment puis-je faire cela en utilisant la ligne de commande sous Linux ?

Mon plus gros problème est que chaque fichier a un nom complètement illisible.

Par exemple :

ÄÿÇä ÄùàÄàÜ ÄæÆë ÜÖÆà.docx

Parce que ces fichiers ont été nommés à l'origine en hébreu et que lorsque le fichier zip a été extrait, les fichiers ont reçu des noms illisibles.

1voto

John1024 Points 33528

Essayez :

count=0; for f in *.docx; do mv -i -- "$f" "$((count=count+1)).docx"; done

S'il y avait une chance que l'un des fichiers originaux ait été nommé avec un simple numéro, comme par exemple 3.docx il est plus sûr de déplacer les fichiers dans un autre répertoire en même temps qu'ils sont renommés :

count=0; for f in *.docx; do mv -i -- "$f" "some/other/dir/$((count=count+1)).docx"; done

Comment cela fonctionne-t-il ?

  • count=0

    Cette opération initialise la variable count à zéro.

  • for f in *.docx; do

    Cela permet de lancer une boucle avec f étant attribué au nom de chaque fichier docx à tour de rôle.

  • mv -i -- "$f" "some/other/dir/$((count=count+1)).docx"

    Cette opération permet de renommer/déplacer les fichiers. $((count=count+1)) indique à l'interpréteur de commandes d'incrémenter la valeur count à chaque fois.

    Sous bash, $((count=count+1)) peut être simplifiée comme suit $((++count)) .

  • done

    Cela signale la fin de la boucle.

1voto

potong Points 18653

Cela pourrait fonctionner pour vous (GNU parallel) :

parallel --dry-run mv -v ::: *.docx :::+ {1..300}.docx

Ceci imprimera les commandes pour renommer tous les fichiers se terminant par .docx à des nombres consécutifs jusqu'à 300 inclus.

Pour exécuter les commandes (après inspection), il convient de supprimer l'élément --dry-run option.

1voto

Ole Tange Points 4907

Cela pourrait fonctionner :

parallel mv -- {} {#}.docx ::: *.docx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X