Ich habe eine Reihe von Dateinamen in einem Ordner wie folgt aus:Korrektur Dateinummern mit bash
test_07_ds.csv
test_08_ds.csv
test_09_ds.csv
test_10_ds.csv
...
Ich will die Nummer jeder Datei verringern, so dass diese sich:
test_01_ds.csv
test_02_ds.csv
test_03_ds.csv
test_04_ds.csv
...
hier ist, was ich kam mit:
for i in $1/*; do
n=${i//[^0-9]/};
n2=`expr $n - 6`;
if [ $n2 -lt 10 ]; then
n2="0"$n2;
fi
n3=`echo $i | sed -r "s/[0-9]+/$n2/"`
echo $n3;
cp $i "fix/$n3";
done;
gibt es eine saubere Art und Weise, dies zu tun?
kollabiert, wenn Sie Perl-basierte Umbenennungs Befehl haben, versuchen Sie 'Umbenennen -n‚s/\ d +/sprintf "% 02d" , $ & - 6/e 'test_ * '...' -n' Option ist für den Trockenlauf .. Es könnte sich über bereits vorhandene Datei im Falle eines Konflikts beschweren, sollte aber funktionieren, wenn 'test_ *' automatisch versionsortiert wird, gegebene Zahlen sind alle zwei Ziffern – Sundeep