web-dev-qa-db-fra.com

Comment renommer tous les fichiers du dossier avec le nom se terminant par "_backup"

J'ai un tas d'images qui ont été renommées de myimage.jpg à myimage.jpg_backup, de sorte que les images de mon site Web ne se chargent plus. Comment pourrais-je trouver récursivement toutes les images se terminant par _backup et ne supprimer que la partie _backup tout en préservant le reste du nom de fichier?

J'ai essayé quelque chose comme ça:

Sudo find . -name "*.jpg_backup" -exec rename -n 's/_backup$//' *.jpg_backup ';'

mais cela me donne une erreur:

Can't rename *.jpg_backup *.jpg: No such file or directory
4
bigpotato

essayez rename -v 's/\.jpg_backup$/\.jpg/' *.jpg_backup le -v vous donne une sortie détaillée. voir ici comment renommer

6
TiloBunt

Dans un terminal , allez dans le répertoire où se trouvent ces fichiers (avec cd /path/to/folder). Si les fichiers ne contiennent pas d'espaces ni de caractères spéciaux \[*?, exécutez la commande suivante:

for file in `find . -name *.jpg_backup` ; do mv "$file" "${file%_backup}"; done

Si vous pensez que les noms de fichiers contiennent des espaces ou des caractères globaux, utilisez:

find . -type f -name '*.jpg_backup' -print0 \
| while IFS= read -r -d '' file ; do mv -- "$file" "${file%_backup}"; done

ou:

shopt -s globstar; 
for file in /path/to/folder/**/*.jpg_backup ; do mv -- "$file" "${file%_backup}"; done

Les commandes ci-dessus trouveront de manière récursive tous les fichiers *.jpg_backup du dossier et des sous-dossiers actuels et les renommeront en *.jpg. Le dernier se penche également sur les liens symboliques vers les répertoires.

3
Radu Rădeanu