web-dev-qa-db-fra.com

Comment puis-je changer tous les préfixes de fichiers en une seule commande?

Je dois changer les postfixes de tous les fichiers (tous les mêmes .JPEG) en .jpeg (majuscules/minuscules).
Y a-t-il un moyen rapide de le faire?

7

Utilisez le programme Perl rename qui est installé par défaut:

rename 's/\.JPEG$/.jpeg/' *.JPEG

Le premier argument est une expression régulière Perl qui correspond aux noms de fichiers se terminant par .JPEG et le remplace par .jpeg.

Le deuxième argument sélectionne les fichiers qui doivent correspondre, dans votre cas, tous les fichiers du répertoire en cours se terminant par .JPEG. Vous pouvez spécifier un autre emplacement bien sûr:

rename 's/\.JPEG$/.jpeg/' ~/Pictures/*.JPEG

Autres réponses que j'ai vues:

  • rename s/.JPEG$/.jpeg/ * - cela renommera également des fichiers tels que StupidJPEG en Stupi.jpeg car le point correspond à n'importe quel caractère. .JPEG$ est une expression régulière
  • rename 's/\.JPEG$/\.jpeg/' * - fonctionne, mais est moins efficace car il transmet tous les fichiers du répertoire actuel à rename.
  • rename -n 's/.JPEG$/.jpeg/' *.JPEG - l'option -n affiche les fichiers en cours de changement de nom, sans les renommer ("exécution à sec"). Étant donné que *.JPEG ne fait correspondre que les fichiers ayant pour suffixe .JPEG, le problème de la correspondance de points nuls n’existe pas ici.
14
Lekensteyn

Bien que ce ne soit peut-être pas la meilleure solution pour ce cas d'utilisation particulier,

for i in *.JPEG; do mv "$i" "$(basename "$i" .JPEG).jpeg"; done

fonctionne aussi. Nous pouvons faire quelques astuces avec bash afin d'augmenter légèrement l'efficacité (en évitant d'invoquer un sous-processus supplémentaire dans la boucle interne), en terminant par:

for i in *.JPEG; do mv "$i" "${i%%.JPEG}.jpeg"; done

Cette solution est particulièrement utile si vous voulez faire autre chose en outre renommer les fichiers, par exemple en enregistrant les noms modifiés, ou même en effectuant un essai à blanc pour vous assurer qu’il fait ce que vous voulez.

3
crazy2be

Il existe un outil pour cela:

Sudo apt-get install renameutils ou cliquez renameutils

(si pas déjà installé)

où vous pouvez faire (en ligne de commande):

rename s/\.JPEG$/\.jpeg/ *.JPEG

3
Rinzwind

Je l'ai trouvé une seconde après avoir posté:

rename 's/\.JPEG$/.jpeg/' *
2

Utilisez la commande renommer. C'est différent du déménagement et cela crée souvent de la confusion parce qu'il a été créé spécifiquement pour renommer les images.

Quelque chose comme cette commande devrait fonctionner (pour tous les fichiers se terminant par .JPEG, remplacez .JPEG par .jpeg)

renommer -n 's/.JPEG $/.jpeg /' * .JPEG

1
tgm4883

Faire des choses en en parallèle devient de plus en plus important, c'est pourquoi je recommande:

parallel mv {} {.}.jpg ::: *.JPG

Cet utilitaire n'est cependant pas installé par défaut.

1
Sebastian

Si vous recherchez une solution pour l'interface graphique de Nice et que vous ne voulez pas vous perdre avec des arguments compliqués en ligne de commande, il existe un excellent script Nautilus à renommer. des dossiers. Il a une interface simple et de nombreuses options.

Disponible ici: http://gnome-look.org/content/show.php/Renamer?content=87601

0
MarkovCh1