Existe-t-il un moyen de renommer tous les fichiers d'un répertoire en minuscules | majuscules?
Je recherche une commande oneliner .
J'ai adoré TotalCommander alt+f7
, maintenant j'ai besoin de cette fonctionnalité dans le terminal
la source
Existe-t-il un moyen de renommer tous les fichiers d'un répertoire en minuscules | majuscules?
Je recherche une commande oneliner .
J'ai adoré TotalCommander alt+f7
, maintenant j'ai besoin de cette fonctionnalité dans le terminal
Pour chaque fichier a_file
du répertoire actuel, renommez-le a_file
en minuscules.
for a_file in *;do mv -v "$a_file" `echo "$a_file" | tr [:upper:] [:lower:]` ;done;
Pour les majuscules, inversez les arguments pour [:lower:] [:upper:]
tr
lien de référence de commande
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
peuvent être utilisés:
for a_file in $(ls *.jpg);do mv -v $a_file `echo $a_file | tr [:upper:] [:lower:]` ;done;
Le code ci-dessus affectera à la a_file
variable tous les fichiers avec l'extension .jpg.
Mettre à jour l'-v
option ajoutée à la mv
commande selon les suggestions de sds .
mv
voir ce qui se fait; vous ne voudrez peut- être pas passer "-f" car cela pourrait encombrer les fichiers existantsIl existe un utilitaire plus élégant et général appelé
prename
.Écrit par Larry Wall, il est livré avec
perl
donc il est très probablement déjà disponible sur votre système/usr/bin/prename
(si vous avez des alternatives de configuration, il peut également être disponible sous/usr/bin/rename
forme de lien symbolique via / etc / alternatives versprename
)En l'utilisant, vous pouvez renommer plusieurs fichiers en une seule commande en fournissant n'importe quelle expression perl (y compris, mais sans s'y limiter, la substitution
s///
ou la translittération chartr///
):Exemples:
Etc.
Une autre bonne chose à propos de prename est qu'il vous protège, dans le cas de renommer un fichier en un nom de fichier existant.
man prename
pour plus de détails.la source
En utilisant
find
Pour
find
-name
mis votre modèle.-maxdepth 0
: Uniquement le répertoire courant.Pour
rename
-n, -nono
: Aucune action: affichez les noms des fichiers à renommer, mais ne les renommez pas.y/source/dest/
: Translittérer les caractères de l'espace de motif qui apparaissent en source au caractère correspondant dans dest.la source