Umbenennen von Dateien mit Nummern in entsprechende 1-n-Nummern in der Reihenfolge

Umbenennen von Dateien mit Nummern in entsprechende 1-n-Nummern in der Reihenfolge

Ich habe also einen Haufen Dateien in einem Ordner, bei denen eine vorangestellte Zahl die Reihenfolge der Dateien angibt, es handelt sich aber nicht um die üblichen Zahlen 1-n, wie hier:

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

und ich möchte sie in einer sequenziellen Reihenfolge von 1 bis „Anzahl der Dateien“ haben, wobei die numerische Reihenfolge erhalten bleiben soll, also:

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

wobei 1-file.txt die vorherige 2-file.txt ist, 2-file.txt die vorherige 4-file.txt ist und so weiter

Antwort1

Dieses Skript sollte die Aufgabe für Sie erledigen. Stellen Sie sicher, dass Sie es von DEBUG auf LIVE umstellen:

#!/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

Und hier ist eine Version ohne die fest codierte Erweiterung:

#!/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

verwandte Informationen