Cambiar el nombre de archivos con números a los números 1-n correspondientes en orden

Cambiar el nombre de archivos con números a los números 1-n correspondientes en orden

Entonces tengo un montón de archivos en una carpeta, donde un número inicial representa el orden del archivo, pero no son el 1-n habitual, como este:

2-file.txt
4-file.txt
7-file.txt
12-file.txt

y quiero tenerlos en orden secuencial del 1 al "número de archivos", preservando el orden numérico, entonces:

1-file.txt
2-file.txt
3-file.txt
4-file.txt

donde 1-file.txt es el 2-file.txt anterior, 2-file.txt es el 4-file.txt anterior y así sucesivamente

Respuesta1

Este script debería hacer el trabajo por usted. Asegúrese de cambiarlo de DEBUG a LIVE:

#!/bin/sh

list=`ls *-file.txt | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f $i-file.txt"
    #LIVE MODE
    #mv $f $i-file.txt
    i=$(($i + 1))
done

Y aquí hay una versión sin la extensión codificada:

#!/bin/sh

if [ -z $1 ]
then
    echo "
You need to pass a prefix. For example:
 ${0##*/} -file.txt
"
    exit 1
fi

list=`ls *${1} | sort -n`

i=1
for f in $list
do
    #DEBUG MODE
    echo "mv $f ${i}${1}"
    #LIVE MODE
    #mv $f ${i}${1}
    i=$(($i + 1))
done

información relacionada