(linuks / bash)
Bywa, że Blender 3d wyłoży się tworząc plik /tmp/quit.blend. Chciałbym wówczas przenieść ten plik do katalogu z projektem, wraz z zmianą jego nazwy, by stał się bieżącym. Na przeszkodzie mogą być poprzednie wersje – przypuśćmy, że mam:
plik.blend30 plik.blend29 ... plik.blend2 plik.blend1 plik.blend
Chciałbym by pliki przeskoczyły o jeden numerek w górę, plik.blend uzyskał sufiks 1, a quit.blend pojawił sie w katalogu projektu jako plik.blend.
Testowanie zmiany numeracji plików z sufiksem – Blender maksymalnie tworzy 32 wersje.
$ for i in {31..1}; do echo plik.blend${i} plik.blend$(expr $i + 1); done plik.blend30 plik.blend31 plik.blend29 plik.blend30 ... plik.blend2 plik.blend3 plik.blend1 plik.blend2
Jeśli powyższe jest zgodne z oczekiwaniami to wykonuję zmianę.
mv będzie się skarżył na brak pliku z sufiksem 31, bo w tym przykładzie takiego nie ma, ale pętla jest uniwersalna – także na sytuacje gdyby taki plik byl
$ for i in {31..1}; do mv -v plik.blend${i} plik.blend$(expr $i + 1); done mv: cannot stat 'plik.blend31': No such file or directory 'plik.blend30' -> 'plik.blend31' 'plik.blend29' -> 'plik.blend30' ... 'plik.blend2' -> 'plik.blend3' 'plik.blend1' -> 'plik.blend2'
Co się jednak stanie gdyby istniały pliki o sufiksach 1 do 32?
Najstarszy plik 32 zostanie nadpisany wersją 31!
Wracając do mojej sytuacji: modyfikuję nazwę przestarzałego-bieżącego pliku
$ mv -iv plik.blend plik.blend1
i “dogrywam”
$ mv -iv /tmp/quit.blend ./plik.blend