2 votes

Renommage par lots, quelle que soit l'extension du fichier

Je suis assez novice en matière de renommage par lots et j'ai cherché un peu et j'ai trouvé quelques trucs pour renommer un grand nombre de fichiers qui sont tous du même type, mais rien pour renommer un grand nombre de fichiers qui ont des extensions différentes.

Je veux dire par là que j'ai un répertoire comme celui-ci :

Folder 
  |
  file.jpg
  EBUFEWO.png
  otherFile.jpg

et j'essaie de comprendre comment je peux le renommer pour qu'il soit comme ceci :

Folder
  |
  Renamed_0001.jpg
  Renamed_0002.png
  Renamed_0003.jpg

J'aimerais conserver les extensions des fichiers dans le dossier mais les renommer comme je l'ai fait ci-dessus.

J'ai cherché pendant un certain temps et je n'ai pas vraiment trouvé d'exemple de cela, toute aide serait la bienvenue !

1voto

steeldriver Points 118154

Je pense que je ferais

shopt -s nullglob

cd Folder

n=1
for file in *.*; do 
  printf -v newfile 'Renamed_%04d.%s' $((n++)) "${file##*.}"
  echo mv -- "$file" "$newfile"
done
mv -- EBUFEWO.png Renamed_0001.png
mv -- file.jpg Renamed_0002.jpg
mv -- otherFile.jpg Renamed_0003.jpg

( echo ajouté à des fins de test). Alternativement, avec l'outil perl prename

cd Folder
prename -n 'our $n; s/(.*)\.(.*)$/sprintf "Renamed_%04d.%s", ++$n, $2/e' *.*
EBUFEWO.png renamed as Renamed_0001.png
file.jpg renamed as Renamed_0002.jpg
otherFile.jpg renamed as Renamed_0003.jpg

( -n ajouté à des fins de test).

0voto

SwallowTail Points 97

J'espère que cela vous aidera.

count=1; \
for file in * ; do ext=${file##*.}; \
while [ ${#count} -ne 3 ]; do count="0"$count; done; \
mv "$file" Renamed_$count.$ext; count=$((10#$count+1)); done

Ceci a été testé sur le contenu d'un seul dossier et a fonctionné comme vous l'avez spécifié.

  1. ext=${file##*.} obtenir l'extension du fichier à renommer.
  2. while [ ${#count} -ne 3 ]; do count="0"$count; done vous avez demandé que les fichiers renommés contiennent 3 chiffres, ce qui ajoute le nombre requis de zéros de tête, 1 devient 001 y 20 devient 020 etc.
  3. mv "$file" Renamed_$count.$ext; renomme le fichier selon les paramètres spécifiés.

Compte tenu de mon expérience limitée, je suis sûr qu'il existe des méthodes plus simples et plus efficaces.

Notez que cette opération a été exécutée une fois sur un dossier spécifié.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X