J'ai une tonne de fichiers, tous les trucs comme nom 1.jpg
, 2.jpg
, 3.jpg
et ainsi de suite jusqu'à 1439.jpg
, cependant, j'ai un problème avec l' un de mes projets et classement par ordre alphabétique. Il se fera généralement dans l'ordre 1.jpg
, 10.jpg
, 11.jpg
et ainsi de suite.
Ce dont j'ai besoin, c'est d'un moyen de nommer les fichiers afin qu'ils soient dans le format tel que 00001.jpg
jusqu'à la fin 01439.jpg
.
Comment pourrais-je le faire rapidement et efficacement?
scripts
batch-rename
Kaz Wolfe
la source
la source
ls -v
unix.stackexchange.com/questions/33909/…pyrenamer
.Réponses:
Ubuntu est livré avec un script appelé
rename
. C'est juste un petit script Perl qui comporte un certain nombre de puissantes fonctionnalités de renommage en bloc, mais le meilleur (dans ce cas) est la possibilité d'exécuter Perl pendant le remplacement. Le résultat est une solution vraiment compacte:Ceci est similaire aux autres
printf
réponses de style ici, mais tout est géré pour nous. Le code ci-dessus est pour un nombre à 5 chiffres (y compris un nombre variable de zéros en tête).Il recherchera et remplacera la première chaîne de nombres qu'il trouve par une version à remplissage nul et laissera le reste du nom de fichier seul. Cela signifie que vous n'avez pas à vous soucier trop de reporter une extension ou un préfixe.
Remarque: ce n'est pas complètement portable. De nombreuses distributions utilisent
rename.ul
leutil-linux
package commerename
binaire par défaut . Il s'agit d'une alternative considérablement retardée (voirman rename.ul
) qui ne comprend pas ce qui précède. Si vous le souhaitez sur une plate-forme qui n'utilise pas le renommage de Perl, découvrez d'abord comment l'installer.Et voici un harnais de test:
Et un exemple de préfixes (nous ne faisons rien de différent):
la source
sprintf
sprintf
modifier
Explication:
if [[ $f =~ [0-9]+\. ]]
s'assure que seuls les fichiers dont les noms sont des nombres (suivis d'un point) sont renommés.printf "%.5d" NUMBER
ajoute les zéros de tête"${f%.*}"
coupe l'extension (.jpg) et ne laisse que le nombre.jpg
après le deuxième backtick ajoute à nouveau l'extension de fichier.Notez que cela ne fonctionnera que sur les noms de fichiers qui sont des nombres. Le remplissage à gauche des zéros de tête des fichiers non numérotés nécessiterait un format différent.
Si vous voulez expérimenter, essayez cette commande:
Modifier 2
Rendre la commande plus sûre en s'assurant que seuls les noms de fichiers qui sont des nombres sont renommés. Notez que tous les fichiers préexistants nommés comme 00001.jpg seront remplacés.
la source
Ci-dessous un script python.
Le script ajoute des zéros non significatifs au nombre défini de chiffres. Si le nom est plus grand que cela, le fichier (nom) est intact.
La combinaison de différentes extensions en une seule action de renommage peut ajouter une certaine commodité. Pour ajouter des extensions, ajoutez-les simplement au tuple, par exemple
extensions = (".jpg", ".jpeg", ".tiff")
.Copiez le texte dans un fichier vide, enregistrez-le sous
rename.py
, entrez le chemin d'accès correct au répertoire de fichiers (sourcedir
), le nombre de chiffres que vous souhaitez que les nouveaux noms aient (number_ofdigits
) et l'extension (s) de fichier à renommer (extensions
)Exécutez-le par la commande:
Le script:
modifier:
Ci-dessous une version légèrement améliorée. Il détermine automatiquement le nom le plus long dans le répertoire et ajoute des zéros de tête jusqu'à la longueur du nom le plus long.
Exemple:
devient:
Pas besoin de définir le nombre de chiffres.
la source
Il existe un utilitaire de renommage implémenté en Perl qui rend cela très simple:
Le premier argument est une expression Perl évaluée pour chaque nom de fichier.
la source
Il existe une interface graphique qui le fera, appelée pyRenamer, qui peut être trouvée dans les référentiels. Installez, démarrez, sélectionnez votre répertoire et définissez simplement le 'Modèle de nom de fichier renommé' sur '{num5}' dans l'onglet 'Modèles' et cliquez sur le bouton 'Renommer'. Vous pouvez également prévisualiser ce qui se passera avant de renommer.
la source
shell-scripting
section, ce qui signifie que je recherche une réponse en ligne de commande. Pouvez-vous également fournir plus de détails sur le programme? Par exemple, quel est le format de motif{num5}
?C'est grossier, car il ne fait pas le renommage intelligemment, devra penser à une astuce pour cela. Mais cela devrait vous aider à trier les choses.
Mise à jour: Eh bien, vous avez une réponse plus complète.
la source