J'ai quelques centaines de fichiers nommés hortstu01-01-14 puis hortstu01-02-14 ... Vous avez l'idée?
La moitié des fichiers sont nommés hortstu_01-03-14 puis hortstu_01-04-14.
Cela gâche le tri des fichiers par nom et les place dans l'ordre que je préférerais qu'ils soient. Je voudrais donc renommer ceux sans le trait de soulignement en hortstu_
Est-il possible de le faire dans une opération par lots? Si c'est le cas, comment?
Ouvrez un terminal. Tout d'abord, vérifiez que vous avez bien Perl rename
, en tapant man rename
. En bas, il faut dire Perl v5.18.2
ou similaire. (Je pense qu'Ubuntu livre toujours Perl rename
, mais d'autres distributions livrent d'autres versions.)
Si c'est la bonne version, alors cd
dans le répertoire qui contient ces fichiers. Ensuite, exécutez
rename 's/^hortstu/hortstu_/' hortstu[!_]*
hortstu[!_]*
. Cela signifie que les fichiers qui commencent par hortstu
et qui n'ont pas ont _
suivant.^hortstu
(c'est-à-dire hortstu
au début de la chaîne)hortstu_
.hortstu[!_]*
est un bash glob . Le format pour ^hortstu
est une expression régulière.Ou un Bash one liner naviguez vers le dossier avec les fichiers, puis exécutez-le dans le terminal:
for file in hortsu*;do echo "$file" "${file/_/-}";done;
Fondamentalement, cela concerne les fichiers portant le nom "hortsu" suivi de tout caractère "*", faisant écho au nom de "$ file" ainsi qu'au nom du fichier avec tous les traits de soulignement remplacés par des tirets. Lorsque vous vous sentez à l'aise avec cela, remplacez simplement echo
par cp
pour copier les fichiers sous le nouveau nom.
Une solution Pythonic.
Essayez ceci dans un environnement sûr, copiez peut-être un ou deux fichiers dans un nouveau dossier pour tester son fonctionnement.
Enregistrez le code suivant dans gedit et donnez-lui un nom avec une extension de fichier ".py" quelque chose comme rename_files_in_current_directory.py
:
# copy this code into gedit and save it to the directory with the files in it
import os
# for files in the current directory ('.')
for file_names in os.listdir('.'):
if '_' in file_names:
# using os.system use cp (copy) to copy file_names to file-names by replacing
# underscore with dash
os.system('cp '+file_names+' '+file_names.replace('_','-'))
Assurez-vous que python est installé. 'Sudo apt-get install python'
Accédez au dossier dans le terminal avec le script et les fichiers, puis exécutez:
python the_name_given_to_the_python_script.py
Remarque:
Vous pouvez supprimer les tirets dans les commandes ci-dessus et les scripts supprimeront les traits de soulignement.
for file in hortsu*;do cp "$file" "${file/_/}";done;
ou dans le changement de script python:
file_names.replace('_','-')
à file_names.replace('_','')
Pour ceux qui préfèrent les applications GUI ou tout simplement comme la possibilité de prévisualiser le résultat, vous voudrez peut-être installer Thunar. C'est le gestionnaire de fichiers principal de XFCE; vous le trouvez dans les référentiels.
Lorsque vous sélectionnez plusieurs fichiers dans Thunar et les renommez (via le menu contextuel ou F2), vous obtenez une boîte de dialogue élaborée qui prend en charge toutes sortes d'opérations de renommage. Vous pouvez résoudre votre problème comme suit: