Я пытаюсь добавить / изменить имена файлов, добавив последовательные номера к файлам, которые имеют совпадающие имена файлов. Я все еще учусь, но на основе ряда сообщений от SO я смог подобраться ближе. Проблема заключается в следующем коде: добавляйте номера последовательно ко всем файлам, не основываясь на соответствующих именах файлов.
e='t'
j=1
basename="$1"
newname="$2"
for f in "$basename"*.run?.t
do
echo mv -- "$f" "$newname${f#$basename%.run*.t}.run$((j++)).$e"
done
Вот упрощенная версия моих файлов:
1234.Gorilla_sub1.run1.t
1234.Gorilla_sub2.run1.t
1234.Gorilla_sub3.run1.t
1234.Gorilla_sub1.run2.t
1234.Gorilla_sub2.run2.t
4578.Gorilla_sub1.run1.t
4578.Gorilla_sub2.run1.t
Я хочу:
1234.Gorilla_sub1.run1.t
1234.Gorilla_sub2.run2.t
1234.Gorilla_sub3.run3.t
1234.Gorilla_sub1.run4.t
1234.Gorilla_sub2.run5.t
4578.Gorilla_sub1.run1.t
4578.Gorilla_sub2.run2.t
Но мой код выше делает это:
1234.Gorilla_sub1.run1.t.run1.t
1234.Gorilla_sub2.run1.t.run2.t
1234.Gorilla_sub3.run1.t.run3.t
1234.Gorilla_sub1.run1.t.run4.t
1234.Gorilla_sub2.run1.t.run5.t
4578.Gorilla_sub1.run1.t.run6.t
4578.Gorilla_sub2.run2.t.run7.t
Как я могу заставить его перезапустить нумерацию на основе того же префикса имени файла (1234.Gorilla, 4578.Gorilla)? Также заменить прогон? .T, а не добавить его на? Часть файла, читающая саб? Я на самом деле удалю позже, если это будет иметь значение.
Большое спасибо!