L’un des moyens de renommer rapidement des fichiers sous Windows est
F2 > Rename > Tab (to next file) > Rename ...
Mais dans Ubuntu/Nautilus, je ne peux pas passer au fichier suivant. Mais étant sous Linux, je pense qu’il doit exister une alternative en ligne de commande.
Cependant, je souhaite parfois plus de contrôle sur la manière de renommer des fichiers spécifiques. Dans ce cas, il est peut-être préférable de pouvoir passer au fichier suivant.
J'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" *
Ceci remplacera la chaîne SEARCH
par REPLACE
dans chaque fichier (c'est-à-dire, *
). /g
signifie global, donc si vous aviez un SEARCH_SEARCH.jpg
, il serait renommé REPLACE_REPLACE.jpg
. Si vous n'aviez pas /g
, il n'aurait procédé qu'à une seule substitution et s'appellerait donc maintenant REPLACE_SEARCH.jpg
. Si vous souhaitez tenir compte de la casse, ajoutez /i
(ce serait donc /gi
ou /ig
à la fin).
Avec les expressions régulières, vous pouvez faire beaucoup plus.
Notez que rename
est la commande prename
NAME _ (aussi appelée Perl rename
name__), qui prend en charge les expressions régulières Perl complètes. Il existe un autre rename
qui utilise des modèles et n’est pas aussi puissant. prename
était installé par défaut sur Ubuntu (avec Perl), mais maintenant vous devrez peut-être faire:
Sudo apt install rename
Voici quelques exemples:
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 souhaitiez 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 dans '^CD RIP '
; sans cet 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
dans n’importe quelle partie du nom de fichier. Le ^
garantit qu'il ne supprime les caractères que s'ils sont au début du fichier.
Ajouter :
rename 's/$/_MySuffix/' *
document.pdf
renommé en document.pdf_MySuffix
Changer :
rename 's/\.pdf$/.doc/' *
changera Something.pdf
en Something.doc
. (La raison de la barre oblique inverse est que .
est un caractère générique dans regexp. .pdf
correspond donc à qPDF
alors que \.pdf
correspond uniquement à 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 SINGLE! Vous ne pouvez pas omettre les guillemets ni utiliser des guillemets doubles, sinon bash essaiera de les traduire. Pour bash \.
et "\."
est égal à .
. "\ n" pour une nouvelle ligne, mais "\."
n'étant pas une séquence d'échappement valide, il se traduit par .
)
En fait, vous pouvez même inclure les parties de la chaîne entre guillemets au lieu de l'ensemble: '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'option -n
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 faits si vous n'aviez pas mis l'indicateur -n
ici. Si cela vous convient, appuyez sur Up pour revenir en arrière, effacez le -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 rename
par défaut, mais elles sont toujours disponibles dans les référentiels. Utilisez Sudo apt install rename
pour l'installer
Essayez pyrénamère .
Ce n'est pas intégré à Nautilus, mais il fait le travail. Ici est une critique.
Thunar (partie de XFCE) possède également un renomeur que vous pouvez exécuter séparément.
Il semble y avoir un projet sur le tableau de bord appelé nautilus-renamer . Vous pouvez l'installer en exécutant make install
une fois le script téléchargé et désarchivé. Il semble avoir certaines fonctionnalités ou, si vous connaissez certaines programmations, vous pouvez simplement l’améliorer selon vos besoins, car il ne s’agit que d’un script python.
En ligne de commande, pour renommer un seul fichier, la commande est simplement
mv file1.txt file2.txt
Si vous voulez le faire en batch, vous voudrez probablement le faire via un script. Si vous fournissez plus de détails, moi-même ou quelqu'un d'autre pouvons probablement vous en préparer un. Cela dit, un script pour ajouter des éléments à un fichier pourrait ressembler à ceci:
#!/bin/bash
for file in *
do
# separate the file name from its extension
if [[ $file == *.* ]]; then
ext="${file##*.}"
fname="${file%.*}"
mv "$file" "${fname}_APPENDSTUFFHERE.$ext"
else
mv "$file" "${file}_APPENDSTUFFHERE"
fi
done
En fonction de la manière dont vous avez besoin de renommer les éléments, cela sera probablement modifié, par exemple si vous devez suivre des règles de renommage spécifiques. (Personnellement, je le ferais via un script Perl car mon bash-foo n'est pas terrible, mais c'est juste moi.)
Notez que j'ai obtenu la séparation du nom de fichier et de l'extension de ne question précédemment posée .
Si vous souhaitez le faire sans ligne de commande, comme ce que vous avez fait dans Windows, utilisez touche fléchée droite au lieu de touche de tabulation. Ceci sélectionnera le fichier suivant comme le ferait l'onglet sous Windows.
Pas vraiment la même question que Comment renommer plusieurs fichiers à la fois? mais je vais suggérer le même programme que celui que j'ai suggéré dans cette réponse: qmv .
qmv est un outil pratique du paquet renameutils. Il vous permet d'utiliser votre éditeur de texte favori pour renommer des fichiers. Combiné à la puissance de vim, vous disposez d'un excellent utilitaire de changement de nom.
Je l’appelle généralement comme qmv -f do
dans le répertoire où je veux renommer un tas de fichiers. Ou si je veux renommer récursivement qmv -R -f do
.
Chaque fois que j'ai besoin de renommer plusieurs fichiers, je me rabat toujours sur qmv (et vim).
Si la seule option qui convient consiste à renommer manuellement les fichiers, utilisez l’option vidir
(dans le package moreutils
):
Sudo add-apt-repository universe && Sudo apt-get update && Sudo apt-get install moreutils
DESCRIPTION
vidir allows editing of the contents of a directory in a text editor.
If no directory is specified, the current directory is edited.
When editing a directory, each item in the directory will appear on
its own numbered line. These numbers are how vidir keeps track of what
items are changed. Delete lines to remove files from the directory, or
edit filenames to rename files. You can also switch pairs of numbers
to swap filenames.
Note that if "-" is specified as the directory to edit, it reads a
list of filenames from stdin and displays those for editing.
Alternatively, a list of files can be specified on the command line.
Contenu du répertoire de travail actuel:
.
├── bar
├── baz
└── foo
Exécutez vidir
, renommez les noms de fichiers dans les lignes contenant les noms de fichiers que vous souhaitez renommer; frappé CTRL+O et CTRL+X:
.
├── bar.bak
├── baz.old
└── foo.new
Contenu du répertoire de travail actuel:
.
├── bar
├── baz
└── foo
Contenu des fichiers du répertoire de travail actuel:
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is bar
- baz:
This is baz
- foo:
This is foo
$
Exécutez vidir
, changez les nombres dans les lignes contenant les noms de fichiers que vous voulez changer; frappé CTRL+O et CTRL+X:
.
├── bar
├── baz
└── foo
$ for f in *; do printf '- %s:\n\n' "$f"; cat "$f"; echo; done
- bar:
This is foo
- baz:
This is bar
- foo:
This is baz
$
Contenu du répertoire de travail actuel:
.
├── bar
├── baz
└── foo
Exécutez vidir
, supprimez les lignes contenant les fichiers que vous souhaitez supprimer; frappé CTRL+O et CTRL+X:
.
└── baz
J'utilise krename. C'est une application graphique. Il pourrait lire les balises mp3 et ainsi de suite.
Il existe en tant qu'application distincte et fait partie de Krusader.
Il existe également un script rename
- qui fait partie de l'installation standard de Perl (vous l'avez probablement déjà installé). Découvrez-le avec man rename
.