Cambiar nombre/renumerar archivos en el directorio

Cambiar nombre/renumerar archivos en el directorio

En algún directorio tengo muchos archivos llamados

...
DSC_0002
DSC_0005
DSC_0010
...

Quiero cambiar el nombre/renumerar archivos

ARCHIVO_0001
ARCHIVO_0002
...

Quizás necesitaré comenzar la numeración NO desde 0001

Respuesta1

Digamos que el directorio que contiene estos archivos es /ruta/al/dir,
el script que necesita se verá así:

start=1
cd "/path/to/dir"
for file in ./*;do
  mv "${file}" "FILE_$(printf "%04d" $start)"
  start=$((start+1))
done

Respuesta2

intentar

ls | awk '{printf "mv %s FILE_%04d\n",$0,NR ;} ' | bash
  • asegúrese de que ningún archivo tenga nombres divertidos.
  • remove |parte bash para tener una vista previa.
  • utilizar NR+666para comenzar en 667.
  • use %02do %06dpara generar 01 o 000001 como figura.

Respuesta3

Puedes hacer algo como:

#!/bin/bash 
Counter=${1:-1}   # It will take the starting number as 1st parameter
WhichDir=${2:-.}  # It will take the path as 2nd parameter

                  # We try to see if the directory exists and if you can go there
(cd "$WhichDir" 2>/dev/null) || { echo "# $WhichDir NOT FOUND " ; exit 1; }

cd "$WhichDir"                            # it exists and you can go there
shopt -s nullglob                         # see notes
for f in DSC_*                            # for all the files in this dir
do
  New_Name=$(printf "FILE_%04d.jpg" $Counter)
                                          # change .jpg in what you need
  Counter=$(($Counter +1))                # increase the counter
  echo "mv -i \"$f\" \"$New_Name\" "      # the -i will prompt before overwrite
  # mv -i "$f" "$New_Name"                # uncomment this line to make it works
exit 0

Notas

  • Cuando ustedjugarpuede mvser peligroso. Puede sobrescribir archivos existentes. Puede mover/cambiar el nombre del directorio. Por lo tanto, es mejor realizar una verificación visual antes de ejecutar un script. Luego puedes canalizar su salida en un shell:
    por ejemplo ./Myscript.sh, ¿está todo bien? En caso afirmativo, puede escribir ./Myscript.sh | /bin/bash(o puede modificarlo borrando el "eco" o el comentario en la siguiente línea).
  • Es mejor escribir mv -i: aparecerá un mensaje antes de sobrescribir
  • Si no hay DSC_*archivos en el directorio actual, se shopt -s nullglobevitarán errores de expansión.

  • En generalno es seguro analizar elsalida delsincluso si en su caso no debería ser un problema real, porque debería tener para los archivos el nombre estándar de la cámara DSC_nnnn.jpg.

  • Generalmente hay una extensión (tal vez .jpgo .tifo .raw)... cámbiala o bórrala en el script para adaptarla a tus necesidades.

información relacionada