Je l'utilise rename
tout le temps. C'est assez simple, mais j'espère que vous connaissez la regex de base:
rename "s/SEARCH/REPLACE/g" *
Cela remplacera la chaîne SEARCH
par REPLACE
dans chaque fichier (c'est-à-dire, *
). Le /g
moyen global, donc si vous aviez un SEARCH_SEARCH.jpg
, il serait renommé REPLACE_REPLACE.jpg
. Si vous ne l'aviez pas fait /g
, cela n'aurait fait qu'une fois la substitution, et donc maintenant nommée REPLACE_SEARCH.jpg
. Si vous voulez /i
ne pas tenir compte de la casse, ajoutez (ce serait le cas /gi
ou /ig
à la fin).
Avec les expressions régulières, vous pouvez faire beaucoup plus.
Notez qu'il rename
s'agit de la commande prename
(également appelée Perl rename
), qui prend en charge les expressions régulières complètes de Perl. Il y en a un autre rename
qui utilise des modèles et qui n'est pas aussi puissant. prename
utilisé pour être installé par défaut sur Ubuntu (avec Perl), mais maintenant vous devrez peut-être faire:
sudo apt install rename
Voici quelques exemples:
Préfixe
Ajouter :
rename 's/^/MyPrefix_/' *
document.pdf
renommé en MyPrefix_document.pdf
Supprimer :
Aussi, vous pouvez supprimer les chaînes indésirables. Supposons que vous ayez 20 fichiers MP3 nommés comme CD RIP 01 Song.mp3
et que vous vouliez supprimer la partie "CD RIP", et que vous souhaitiez les supprimer avec une seule commande.
rename 's/^CD RIP //' *
CD RIP 01 Song.mp3
à 01 Song.mp3
Notez l’espace supplémentaire '^CD RIP '
, sans l’espace, tous les fichiers auraient un espace comme premier caractère du fichier. Notez également que cela fonctionnera sans le ^
caractère, mais correspondrait CD RIP
à n'importe quelle partie du nom de fichier. La ^
garantie ne supprime les caractères que s'ils sont au début du fichier.
Suffixe
Ajouter :
rename 's/$/_MySuffix/' *
document.pdf
renommé en document.pdf_MySuffix
Changement :
rename 's/\.pdf$/.doc/' *
va changer Something.pdf
en Something.doc
. (La raison de la barre oblique inversée est, .
est un caractère générique dans regexp donc .pdf
correspond qPDF
alors que \.pdf
ne correspond qu'à la chaîne exacte .pdf
. Il est également très important de noter que si vous n'êtes pas familier avec BASH, vous devez mettre des barres obliques inverses entre guillemets SIMPLES! Vous ne pouvez pas omettre les guillemets ou utiliser des guillemets doubles ou bash essayera de les traduire. bash \.
et "\."
égaux .
. (mais les guillemets doubles et anti - slash sont utilisés, par exemple « \ n » pour une nouvelle ligne, mais puisque "\."
n'est pas une séquence d'échappement arrière valide, traduit en .
)
En fait, vous pouvez même inclure les parties de la chaîne entre guillemets au lieu de la totalité: 's/Search/Replace/g'
est identique à s/'Search'/'Replace'/g
et s/Search/Replace/g
à BASH. Vous devez juste faire attention aux caractères spéciaux (et aux espaces).
Je suggère d'utiliser l' -n
option lorsque vous n'êtes pas sûr d'avoir les expressions régulières correctes. Il montre ce qui serait renommé, puis quitte sans le faire. Par exemple:
rename -n s/'One'/'Two'/g *
Ceci listera tous les changements qu'il aurait apportés si vous n'aviez pas mis le -n
drapeau là-bas. Si le résultat est satisfaisant, appuyez sur Uppour revenir en arrière, puis effacez -n
et appuyez sur Enter(ou remplacez-le par -v
pour afficher toutes les modifications apportées).
Remarque : les versions Ubuntu supérieures à 17.04 ne sont pas livrées avec les rename
valeurs par défaut. Cependant, elles sont toujours disponibles dans les dépôts. Utilisez sudo apt install rename
pour l'installer