web-dev-qa-db-fra.com

Comment renommer un groupe de fichiers avec ce qui ressemble à un chemin de fichier Windows dans leurs noms

J'ai eu un tas de fichiers avec le nom de fichier foiré. Tous les noms de fichiers ont le même début, qui semble être des répertoires de fichiers Windows. Le problème est qu'il y a plus de 700 fichiers et que je ne veux vraiment pas les renommer manuellement. Voici des exemples de noms de fichiers (Remarque: aucun d’entre eux n’a de répertoire de fichiers):

G:some\really\long\file\path\then\the\name1.jpg
G:some\really\long\file\path\then\the\name2.png
G:some\really\long\file\path\then\the\filename.txt
G:some\really\long\file\path\then\the\file_name.mov
...

Ce qu'il faut retenir, c'est que chaque fichier a G:some\really\long\file\path\then\the\ avant le nom de fichier souhaité.

Je voudrais donc que les fichiers ci-dessus ressemblent à:

name1.jpg
name2.png
filename.txt
file_name.mov

J'ai essayé la commande rename et je n'ai pas réussi. Je suis encore nouveau avec Linux et je ne suis vraiment pas sûr de savoir comment s'y prendre ni de quoi google. Toute aide serait appréciée.

9
kingcobra1986

Je viens de tout supprimer jusqu'à la dernière barre oblique inverse avec renamename__

$ rename -n 's/.*\\//' G*
rename(G:some\really\long\file\path\then\the\file_name.mov, file_name.mov)
rename(G:some\really\long\file\path\then\the\filename.txt, filename.txt)
rename(G:some\really\long\file\path\then\the\name1.jpg, name1.jpg)
rename(G:some\really\long\file\path\then\the\name2.png, name2.png)

Supprimez -n après le test pour renommer les fichiers.

Remarques

  • -n ne fait rien, affiche juste ce qui sera changé
  • s/old/new remplace oldpar newname__
  • .* n'importe quel nombre de caractères
  • \\ La première barre oblique inversée est d'échapper à la seconde.
  • Comme les expressions rationnelles sont gourmandes, cette expression .*\\ mange également toutes les barres obliques inverses précédentes.
  • Puisque les deux derniers délimiteurs // sont vides, tout ce qui correspond dans la partie de recherche est supprimé.
18
Zanna

Vous pouvez le faire dans bashà l’aide de extension du paramètre Shell .

${file##*\\} (cut-up-to-last-last-prefix) supprime tout du début du nom du fichier jusqu'au dernier \ vu.

for file in *; do
    mv -v "$file" "${file##*\\}";
done

Les résultats de renommer sont:

‘G:some\\really\\long\\file\\path\\then\\the\\file_name.mov’ -> ‘file_name.mov’
‘G:some\\really\\long\\file\\path\\then\\the\\filename.txt’ -> ‘filename.txt’
‘G:some\\really\\long\\file\\path\\then\\the\\name1.jpg’ -> ‘name1.jpg’
‘G:some\\really\\long\\file\\path\\then\\the\\name2.png’ -> ‘name2.png’
10
αғsнιη

Si vous cherchez des solutions GUI, il existe de nombreuses applications de changement de nom en bloc. Je suggérerais Thunar, qui est le gestionnaire de fichiers par défaut pour Xfce. Il est livré avec un outil de renommage en masse très pratique. Vous pouvez installer Thunar en exécutant la commande suivante dans Terminal:

Sudo apt-get install thunar

Vous pourrez probablement également installer à partir du logiciel Ubuntu.

Comment utiliser l'utilitaire

  1. Une fois Thunar installé, lancez l’utilitaire Bulk Rename.
  2. Cliquez sur l'icône + et ajoutez les fichiers que vous souhaitez renommer.
  3. Cliquez sur la liste déroulante juste en dessous de la liste des fichiers sélectionnés et sélectionnez Rechercher & Remplacer.
  4. Dans la zone Recherchez: , saisissez G:some\really\long\file\path\then\the\ (la partie dont vous souhaitez vous débarrasser), laissez le Remplacer par : case vide. Vous devriez voir un aperçu des modifications dans la colonne Nouveau nom .
  5. Pour appliquer les modifications, cliquez sur le bouton Renommer les fichiers.

Outre Search & Replace , cet utilitaire prend en charge les actions suivantes:

  • Insérer date/heure
  • Insérer/écraser
  • Numérotage
  • Supprimer les caractères
  • Majuscule minuscule
6
pomsky