Portál AbcLinuxu, 11. prosince 2025 15:01
slušně jsem se zasmál, ale kdyby se mě to stalo, tak bych se asi tak nesmál
Naštěstí soubory byly čerstvě přesunuty z FAT flashdisku takže je undelete poměrně úspěšné a ze 400 souborů se mi jich podaří zachránit zhruba 350.hm, zajímavé - pokud byly soubory čerstvě přesunuty, očekával bych 100% úspěšnost, copak se stalo s tou padesátkou?

.
Jsi vul
Nejen proto, ze sis ty fotky smaznul sam, ale hlavne proto, ze jsi za to pekne sjebnul nekoho jinyho
Jinak podobne prikazy na hromadny presum nebo mazani pouzivam taky, ale obvykle to nejdriv testuju, bud s vypisem
N=0; for i in *.jpg; do N=$(($N+1)); echo mv "$i" `printf "%03d.jpg" $N`; donenebo aspon s pozadavkem potvrzeni prepsani souboru
N=0; for i in *.jpg; do N=$(($N+1)); mv -i "$i" `printf "%03d.jpg" $N`; doneJinak bych ti doporucoval tvuj skriptik upgradovat na
N=0; for i in *.jpg; do while [ -e `printf "%03d.jpg" $N` ];do N=$(($N+1));done; mv -i "$i" `printf "%03d.jpg" $N`; donepak budes mit jistotu, ze ti nevygeneruje jmeno uz existujiciho souboru.
Ale ty úpravy co navrhuješ jsou vcelku na prd, správné řešení by byl 2-pass rename. Nojo, z foťáku vždycky lezly soubory s dlouhými názvy, takže kolize nehrozila.
První dvě varianty vyžadují ruční kontrolu a jsou tedy na nic.No, prvni variante je jenom overeni, pak staci smazat echo a jede to samo. Druha chce potvrzeni pouze v pripade nalezeni stejnych.
Třetí se jeví jako dobrý nápad ale není idempotentní, takže z 001 002 003 bude přejmenovávat na 004 005 006 a pak zas nazpátek. Chtělo by to přidat kontrolu na identická jména, a v tom případě rename ignorovat a volné jméno nehledat. Nojo, někdy se učíme "hard way"..Aha, tady jsem to trosku nedomyslel, ja to spis myslel takhle
N=0; for i in fotak/*.jpg; do while [ -e archiv/`printf "%03d.jpg" $N` ];do N=$(($N+1));done; mv -i "$i" archiv/`printf "%03d.jpg" $N`; doneAby to ignorovalo uz hotovy ciselny soubory, tak bych delal neco jako
find -type f -iname "*.jpg" -not -iregex '.*/[0-9][0-9][0-9]\.jpg' | (N=0;while read f;do while [ -e `printf "%03d.jpg" $N` ];do N=$(($N+1));done; mv -i "$f" `printf "%03d.jpg" $N`; done )Melo by to fungovat
for n in ???.jpg .jpg ?.jpg ??.jpg *????.jpg a zbytek stejný.
No trochu mě zarazilo že je v programem u Happy fota takový problém. Já tedy dělala fotoknihu před měsícem a byla jsem spokojená jak s manipulací, tak s výsledkem a věřím, že s uploadem fotek je to podobně. Zrovna se do Happy fota chystám ted někdy během tohohle týdne, mám už spoustu fotek k vyvolání, tak se s tím uploadem ráda seznámim.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.