GNU/Linux >> Tutoriels Linux >  >> Linux

Linux renommer les fichiers en majuscules

Le bash shell a une syntaxe pour traduire un nom de variable en majuscules.

for file in * ; do      # or *.jpg, or x*.jpg, or whatever
    mv "$file" "${file^^}"
done

Cette fonctionnalité a été introduite dans la version 4.0 de bash, vérifiez donc d'abord que votre version de bash le met en œuvre. Pour éviter les erreurs, essayez-le une fois en remplaçant mv par echo mv , juste pour s'assurer qu'il va faire ce que vous voulez.

La documentation de cette fonctionnalité est ici, ou tapez info bash et recherchez "supérieur".

Vous devriez probablement décider quoi faire si le fichier cible existe déjà (par exemple, si les deux x00000.jpg et X00000.JPG existe déjà), sauf si vous êtes certain que ce n'est pas un problème. Pour détecter de telles collisions de noms, vous pouvez essayer :

ls *.txt | tr '[a-z]' '[A-Z]' | sort | uniq -c | sort -n

et recherchez les lignes ne commençant pas par 1 .


rename

Le moyen le plus simple de renommer plusieurs fichiers consiste probablement à utiliser le rename de Perl . Pour traduire les noms en minuscules en majuscules, procédez comme suit :

rename 'y/a-z/A-Z/' *

Si les fichiers sont également dans des sous-répertoires, vous pouvez utiliser globstar ou find :

find . -maxdepth 1 -type f -iname "*.jpg" -execdir rename "y/a-z/A-Z/" {} +

Références

  • Tutoriel :Linux renommer plusieurs fichiers à l'invite du shell – nixCraft
  • Plus d'informations sur y/ , traduire au lieu de s remplaçant.
  • DistroTube - Outils pour renommer des fichiers sous Linux

for f in * ; do mv -- "$f" "$(tr [:lower:] [:upper:] <<< "$f")" ; done

Vous ne pouvez pas renommer les fichiers à partir de Bash uniquement, car Bash n'a pas de commande intégrée pour renommer les fichiers. Vous devez utiliser au moins une commande externe pour cela.

Si Perl est autorisé :

perl -e 'for(@ARGV){rename$_,uc}' *.jpg

Si Python est autorisé :

python -c 'import os, sys; [os.rename(a, a.upper()) for a in sys.argv[1:]]' *.jpg

Si vous avez des milliers de fichiers ou plus, les solutions ci-dessus sont rapides et les solutions ci-dessous sont sensiblement plus lentes.

Si AWK, ls et mv sont autorisés :

# Insecure if the filenames contain an apostrophe or newline!
eval "$(ls -- *.jpg | awk '{print"mv -- \x27"$0"\x27 \x27"toupper($0)"\x27"}')"

Si vous avez beaucoup de fichiers, les solutions ci-dessus ne fonctionnent pas, car *.jpg se développe en une liste d'arguments trop longue (erreur :Liste d'arguments trop longue ).

Si tr et mv sont autorisés, alors voir la réponse de Damienfrancois.

Si mv est autorisé :

for file in *; do mv -- "$file" "${file^^}"; done

Veuillez noter que ceux-ci renomment .jpg à .JPG à la fin, mais vous pouvez les modifier pour éviter cela.


Linux
  1. Comment renommer plusieurs fichiers à la fois sous Linux

  2. Renommer de nombreux fichiers sous Linux selon un modèle

  3. Trouver plusieurs fichiers et les renommer sous Linux

  4. Convertir un tas de fichiers BMP en JPEG sous Linux

  5. Renommer récursivement les fichiers (changer l'extension) sous Linux

Commande Rm sous Linux

Comment renommer des fichiers en utilisant la ligne de commande sous Linux

Comment renommer un ou plusieurs fichiers sous Linux

8 méthodes pour renommer plusieurs fichiers à la fois sous Linux

Stéganographie - Masquer les fichiers à l'intérieur des images sous Linux

Linux renommer l'extension de plusieurs fichiers