GNU/Linux >> Tutoriels Linux >  >> Linux

Modifier de manière récursive les extensions de fichier dans Bash

Aucune des solutions suggérées n'a fonctionné pour moi sur une nouvelle installation de Debian 14. Cela devrait fonctionner sur n'importe quel Posix/MacOS

find ./ -depth -name "*.t1" -exec sh -c 'mv "$1" "${1%.t1}.t2"' _ {} \;

Tous les crédits à :https://askubuntu.com/questions/35922/how-do-i-change-extension-of-multiple-files-recursively-from-the-command-line


Si votre version de bash prend en charge le globstar option (version 4 ou ultérieure) :

shopt -s globstar
for f in **/*.t1; do
    mv "$f" "${f%.t1}.t2"
done 

Utiliser :

find . -name "*.t1" -exec bash -c 'mv "$1" "${1%.t1}".t2' - '{}' +

Si vous avez rename disponible alors utilisez un parmi ceux-ci :

find . -name '*.t1' -exec rename .t1 .t2 {} +
find . -name "*.t1" -exec rename 's/\.t1$/.t2/' '{}' +

Je ferais comme ça en bash :

for i in $(ls *.t1); 
do
    mv "$i" "${i%.t1}.t2" 
done

EDIT :mon erreur :ce n'est pas récursif, voici ma façon de changer récursivement le nom de fichier :

for i in $(find `pwd` -name "*.t1"); 
do 
    mv "$i" "${i%.t1}.t2"
done

Linux
  1. La fête ?

  2. Bash :Utilisation procédurale sécurisée des espaces blancs de la recherche dans la sélection ?

  3. Trouver les fichiers les plus volumineux de manière récursive ?

  4. Linux :supprimer les extensions de fichiers pour plusieurs fichiers

  5. Fonction bash pour trouver le plus récent modèle de correspondance de fichier

Commande de source bash

Bash :ajouter au fichier

35 exemples de scripts bash

Comment changer automatiquement l'arrière-plan de GNOME par intervalles à l'aide de BASH

Comment exclure une extension de fichier spécifique lors de la copie récursive de fichiers

Comment rechercher des fichiers avec des dizaines de critères avec la commande Bash Find