GNU/Linux >> Tutoriels Linux >  >> Linux

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

J'ai compris

find . -name "*.andnav" -exec rename -v 's/\.andnav$/\.tile/i' {} \;
./0/0.png.andnav renamed as ./0/0.png.tile
./0/1.png.andnav renamed as ./0/1.png.tile
./1/0.png.andnav renamed as ./1/0.png.tile
./1/1.png.andnav renamed as ./1/1.png.tile

bien sûr, supprimez le -v lorsque vous le faites réellement, sinon cela fera perdre du temps à afficher tous les fichiers


Avec zsh :

autoload zmv
zmv -n '(**/)(*).andnav' '$1$2.tile'

Supprimer le -n pour effectuer réellement le changement de nom.


Quelque chose comme :

find . -name '*.andnav' -exec sh -c 'mv "$0" "${0%.andnav}.tile"' {} \;

Explication

Ce qui précède commence à parcourir l'arborescence des répertoires à partir du répertoire de travail actuel (. ). Chaque fois qu'un nom de fichier correspond au modèle *.andnav (par exemple, foo.andnav ) la commande suivante est exécutée :

sh -c 'mv "$0" "${0%.andnav}.tile"' foo.andnav

$0 est foo.andnav et ${0%.andnav}.tile remplace le .andnav suffixe avec .tile donc en gros :

mv foo.andnav foo.tile

Linux
  1. Comment renommer des fichiers sous Linux

  2. Comment afficher ou modifier l'ACL dans les fichiers Linux

  3. Comment renommer plusieurs fichiers d'une extension à une autre sous Linux/Unix ?

  4. Linux renommer les fichiers en majuscules

  5. Copie récursive de fichiers cachés - 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

Comment supprimer des fichiers avec une extension spécifique sous Linux

Comment lister les fichiers de manière récursive sous Linux

Linux renommer l'extension de plusieurs fichiers