web-dev-qa-db-fra.com

Renommer des images dans un ordre spécifique

C'est mon problème: j'ai un dossier avec 500 images nommé:

1.jpg
2.jpg
3.jpg

etc..

J'ai copié ce dossier et je dois maintenant renommer les mêmes images de 501 à 1000, mais dans l'ordre, comme ceci:

1.jpg  becomes    501.jpg
2.jpg  becomes    502.jpg
3.jpg  becomes    503.jpg          
....

Lorsque j'utilise ma commande de renommage standard:

i=501;for img in $(find . -iname '*.jpg'); do echo -n "Converting $img"; mv $img $i.jpg  && echo $i && ((i++)); done

Il commande des images de 501 à 1000 mais elles sont toutes dispersées:

23.jpg becomes 501.jpg,    
66.jpg becomes 502.jpg 
...   

(ils sont dans le bon ordre, mais ça les mélange)

Je sais que c'est probablement une commande qui me manque ...

8
Painkiller

Essayez Thunar, qui est le gestionnaire de fichiers par défaut pour Xfce. Il est très léger et est livré avec un outil de renommage en masse très pratique. Vous pouvez installer Thunar en exécutant la commande suivante dans Terminal:

Sudo apt-get install thunar

Vous pourrez probablement également installer à partir du logiciel Ubuntu.

Comment utiliser l'utilitaire

  1. Une fois Thunar installé, lancez l’utilitaire Bulk Rename.
  2. Cliquez sur l'icône + et ajoutez les fichiers que vous souhaitez renommer dans le bon ordre.
  3. Cliquez sur la liste déroulante juste en dessous de la liste des fichiers sélectionnés et sélectionnez Numérotation. Cliquez sur la case à côté et sélectionnez Nom uniquement.
  4. Dans la zone " Commencez par: ", entrez 501, laissez le " Texte: "boîte vide. Vous devriez voir un aperçu des modifications dans la colonne Nouveau nom .
  5. Pour appliquer les modifications, cliquez sur le bouton Renommer les fichiers.

Outre Numérotation , cet utilitaire prend en charge les actions suivantes:

  • Insérer date/heure
  • Insérer/écraser
  • Supprimer les caractères
  • Rechercher et remplacer
  • Majuscule minuscule
7
pomsky

La commande find recherche les fichiers dans l'ordre 'répertoire' (23.jpg, 66.jpg, ...). vous pouvez mettre un |sort après la recherche.

Mais vos méthodes sont trop complexes.

for i in $( seq 1 500 ) ; do
    j=$(( $i + 500 ))
    mv $i.jpg $j.jpg
done 
13
waltinator

Avec la commande renamename__.

rename -n 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg

Ou en version pure bashet en utilisant extension du paramètre Shell .

for FILE in *.jpg; do
    mv "$FILE" "$(( ${FILE%.jpg}+500 )).jpg" 
done 
11
αғsнιη

Si j'ai bien compris ce que vous demandez, je pense que vous pouvez le faire en utilisant l'outil de changement de nom par défaut:

rename 's/^(\d+)/sprintf("%d",$1+500)/e' *.jpg -vn

Vous devez supprimer le commutateur -vn (verbose - aucune action) après le test pour que la modification soit effective.

5
sempaiscuba

Un autre moyen de réaliser cela avec une simple commande Shell

nombre = 1; pour i dans lsname__; do mv $ i CN $ ((count ++)). $ {i ## *.}; terminé

0
aneeshep