Renomeando arquivos com números para números 1-n correspondentes em ordem [duplicada]

0

Então, eu tenho um monte de arquivos em uma pasta, onde um número principal representa a ordem do arquivo, mas eles não são o usual 1-n, assim:

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

e eu quero tê-los em uma ordem seqüencial de 1 a "número de arquivos", preservando a ordem numérica, então:

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

em que 1-file.txt é o 2-file.txt anterior, 2-file.txt é o 4-file.txt anterior e assim por diante

    
por Msegade 29.10.2016 / 11:03

1 resposta

2

Este script deve fazer o trabalho para você. Certifique-se de mudá-lo de DEBUG para 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

E aqui está uma versão sem a extensão 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
    
por 29.10.2016 / 11:50