Batch renommer les fichiers en minuscules

16

Est-il possible de renommer tous les fichiers dans un répertoire en minuscules | majuscules?

Je recherche une commande oneliner .

J'ai adoré alt+f7 de TotalCommander, maintenant j'ai besoin de cette fonctionnalité dans le terminal

    
posée Unamata Sanatarai 18.04.2013 - 14:36
la source

3 réponses

20

Pour chaque fichier a_file dans le répertoire en cours, renommer a_file en minuscule.

for a_file in *;do mv -v "$a_file" 'echo "$a_file" | tr [:upper:] [:lower:]' ;done;

Pour les majuscules, inversez les arguments sur [:lower:] [:upper:]

Référence de la commande tr lien

Mise à jour

Pour encore plus de contrôle, * peut être remplacé par ls .

Par exemple, dans un répertoire contenant 1.txt, 2.txt, 3.txt, 1.jpg, 2.jpg et 3.jpg afin de filtrer uniquement les fichiers * .jpg, ls peut être utilisé:

for a_file in $(ls *.jpg);do mv -v $a_file 'echo $a_file | tr [:upper:] [:lower:]' ;done;

Le code ci-dessus assignera à a_file variable tous les fichiers avec l'extension .jpg.

Mettre à jour l'option -v dans la commande mv selon sds suggérée.

    
réponse donnée Stef K 18.04.2013 - 14:57
la source
16

Un utilitaire plus élégant et général appelé prename .

Écrit par Larry Wall, il est fourni avec perl , il est donc probablement déjà disponible sur votre système sous le nom /usr/bin/prename (si vous avez des options de configuration, il peut également être disponible sous la forme /usr/bin/rename via / etc / alternatives). prename )

En l’utilisant, vous pouvez renommer plusieurs fichiers en une seule commande en fournissant toute expression perl (y compris, mais sans s'y limiter, la substitution s/// ou la translittération char tr/// ):

Exemples:

# Lowercase all *.JPG filenames:
prename tr/A-Z/a-z/ *.JPG

# Change any 'No' in a filename to a 'Yes':
prename s/No/Yes/g *No*

# increment first sequence of digits in a filename by 3:
prename 's/([0-9]+)/+3/e' *[0-9]*

# If a file contains 'aaa', append '.bak' to its name
prename 'if (/aaa/) {$_ .= ".bak"}'  *

Et ainsi de suite.

Une autre bonne chose à propos de prename est qu’elle vous protège, en cas de renommage d’un fichier en un nom de fichier existant.

man prename pour plus de détails.

    
réponse donnée arielf 20.04.2013 - 04:19
la source
1

Utilisation de find

find . -name * -type f -exec rename 'y/A-Z/a-z/' '{}' \;

Pour find

  • Bien sûr, après que -name ait mis votre modèle.
  • -maxdepth 0 : Seul le répertoire en cours.

Pour rename

  • -n, -nono : Aucune action: imprimez les noms des fichiers à renommer, mais ne les renommez pas.
  • y/source/dest/ : Translittère les caractères dans l'espace du motif qui apparaissent dans le source dans le caractère correspondant dans dest.
réponse donnée Pablo Bianchi 16.03.2017 - 03:27
la source

Lire d'autres questions sur les étiquettes