renommer les fichiers avec un décalage dans les nombres

2

Je veux renommer un groupe de fichiers qui s'appellent IMG0189.jpeg IMG0190.jpeg, etc., pour quelque chose comme IMG01.jpeg IMG02.jpeg, respectivement, respectivement. Y at-il un moyen de le faire en utilisant la commande rename? Ou autre chose? J'ai essayé de lire le manuel, mais il est très bref et ne donne aucune idée du changement de numéro.

    
posée Keivan 15.06.2012 - 23:12
la source

1 réponse

5

Que diriez-vous

ls > /tmp/list ; seq -w 'ls | wc -l' | paste /tmp/list - | awk -F\t '{ print , "IMG"".jpeg"}' | xargs -n2 mv
  • Lister les fichiers et rediriger la liste vers un fichier temporaire /tmp/list
  • Ecrivez un seq uence de nombres, rempli de zéros, égal au nombre de fichiers à STDOUT
    • Le nombre de fichiers est obtenu en listant les fichiers et les canalisations vers l'application wc (nombre de mots) en mode "lignes"
  • paste la séquence de nombres de la commande précédente sur le côté droit de la liste de fichiers de /tmp/list
    • Coller colle deux fichiers ensemble sous forme de colonnes séparées par un caractère TAB
    • Diffusez la sortie vers le programme suivant
  • Utilisez un petit programme awk pour reformater ces deux champs
    • Séparateurs spécifiés comme tabulation ( \t - la première barre oblique doit échapper à la seconde)
    • Premier champ , le nom du fichier original imprimé tel quel
    • Deuxième champ , le numéro de séquence, imprimé avec un préfixe IMG et un suffixe .jpeg
    • Diffusez la sortie vers le programme suivant
  • En utilisant xargs , transmettez les paires d'arguments à la commande mv (commande move / rename)
    • -n2 signifie qu'il en fera passer 2 à la fois

NB, cela suppose que vos noms de fichiers d’origine ne contiennent pas d’espace.

Si vous voulez commencer à un nombre autre que 1, vous devez manipuler les paramètres de seq; par exemple

COUNT='ls | wc -l' ; FIRST=32 ; LAST=$(($FIRST + $COUNT)) ; seq -w $FIRST $LAST
    
réponse donnée Adrian 15.06.2012 - 23:55
la source

Lire d'autres questions sur les étiquettes