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

9

J'ai obtenu un tas de fichiers avec le nom de fichier foiré. Tous les noms de fichiers ont le même début qui semblent être des répertoires de fichiers Windows. Le problème est qu'il y a plus de 700 fichiers et je ne veux vraiment pas les parcourir et les renommer tous manuellement. Ce sont des exemples de noms de fichiers (Remarque: aucun d'entre eux n'a de répertoires 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
...

L'important est que chaque fichier a G:some\really\long\file\path\then\the\avant le nom de fichier que je souhaite.

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

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

J'ai essayé la renamecommande 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 ou vraiment quoi google. Toute aide serait appréciée.

kingcobra1986
la source

Réponses:

18

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

$ 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 -naprès le test pour renommer réellement les fichiers.

Remarques

  • -n ne faites rien, imprimez simplement ce qui sera changé
  • s/old/newremplacer oldparnew
  • .* un nombre quelconque de caractères
  • \\ La première barre oblique inverse consiste à échapper à la seconde.
  • Étant donné que les expressions régulières sont gourmandes, cette expression .*\\mange également toutes les barres obliques inverses précédentes.
  • Étant donné que les deux derniers délimiteurs //sont vides, tout ce qui correspond dans la partie de recherche est supprimé
Zanna
la source
Ai-je juste besoin de la première ligne, ou dois-je le faire pour chaque fichier?
kingcobra1986
vous avez juste besoin de la première ligne @ kingcobra1986 les autres ne sont que la sortie. *correspond à tous les fichiers, mais permettez-moi de changer cela en G*- fait - alors maintenant, il correspond à tous les fichiers commençant par Gdans le répertoire courant et fonctionnera tous en même temps. S'ils sont dans plusieurs répertoires, nous pouvons également traiter cela de diverses manières
Zanna
Ça a marché. Pouvez-vous expliquer ce qui se passe exactement dans cette ligne?
kingcobra1986
1
@ kingcobra1986 désolé, j'ai ajouté des notes. J'espère que c'est clair, sinon, n'hésitez pas à demander plus!
Zanna
Ha, j'aime l'idée d'utiliser le .*\\ depuis du gourmand.*
Ziazis
10

Vous pouvez le faire en bashutilisant uniquement l'expansion des paramètres du shell .

${file##*\\}(cut-up-to-last-prefix) supprime tout depuis le début du nom de fichier jusqu'à la dernière \fois.

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

Les résultats de changement de nom sont les suivants:

‘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’
αғsнιη
la source
6

Si vous recherchez des solutions GUI , il existe de nombreuses applications de renommage en masse. Je suggère Thunar , qui est le gestionnaire de fichiers par défaut pour Xfce. Il est livré avec un outil de renommage en vrac 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 que vous avez installé Thunar, 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 et remplacer .
  4. Dans la zone Rechercher: entrez G:some\really\long\file\path\then\the\(la partie dont vous souhaitez vous débarrasser), laissez la zone Remplacer par: vide. Vous devriez voir l'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 la date / l'heure
  • Insérer / écraser
  • Numérotage
  • Supprimer des caractères
  • Majuscule minuscule
pomsky
la source
n'y en a-t-il pas pour le nautile (je pense qu'il y en a!)? Semble plutôt exagéré de suggérer d'installer un nouveau navigateur de fichiers à cet effet.
Zanna
@Zanna Il y en a un en v3.22, mais je pense qu'il n'est toujours pas disponible dans les dépôts Ubuntu.
pomsky
2
Thunar est assez pratique et semble bien coexister avec d'autres navigateurs de fichiers, donc je pense qu'il peut être utile de l'installer à cet effet. Mais pouvez-vous développer cette réponse avec une explication sur la façon de renommer en masse Thunar?
Eliah Kagan
1
@EliahKagan et c'est léger aussi
pomsky
Bien joué, maintenant je peux voter (j'ai un Xubuntu, je peux le tester aussi :))
Zanna