Přijedete z dovolené a sejde se vám několik tisíc fotografií z různých zdrojů. Pokud jste zvyklí, tak jako já, procházet fotografie chronologicky a odmazávat nejvíce nepovedené, vyvstane před vámi úkol seřadit je dle data pořízení. Mnohdy se však stává, že čas vytvoření/modifikace souboru (rozuměj fotografie) obsahuje nějaký nesmysl, který vážně ani vzdáleně nekoreluje se skutečným časem pořízení. Jako nejlepší varianta se mi jeví využít čas z EXIFu, ale takto řadit JPEGy rozhodně neumí každý "editor" a hlavně to neumí ten můj. A proto jsem se rozhodl procházet fotografie seřazené dle názvu s tím, že každou fotografii přejmenuji dle času jejího pořízení a za něj nalepím původní název, to kvůli sekvencím fotografií, kterých typicky vznikne během jedné vteřiny několik a přinesly by tak nechtěné konflikty během přejmenování.
Jak na to? Linux/Cygwin + Bash + Exiv2
for file_name in `ls *.[jJ][pP][gG]`; do exiv2 -r '%Y-%m-%d_%H-%M-%S_:basename:' rename $file_name; done
Jak na to idempotentně? Linux/Cygwin + Bash + Exiv2
for file_name in `ls *.[jJ][pP][gG]`; do [[ $file_name =~ [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.* ]] || exiv2 -r '%Y-%m-%d_%H-%M-%S_:basename:' rename $file_name; done
Jak na to idempotentně? Linux/Cygwin + Bash + Exiv2
Jak na to idempotentně s přesunem do adresářů? Linux/Cygwin + Bash + Exiv2
for file_name in `ls *.[jJ][pP][gG]`; do [[ $file_name =~ [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]_[0-9][0-9]-[0-9][0-9]-[0-9][0-9]_.* ]] || exiv2 -r '%Y-%m-%d_%H-%M-%S_:basename:' rename $file_name; donefor file_name in `ls *.[jJ][pP][gG]`; do [[ -d "../${file_name:0:10}_" ]] || mkdir "../${file_name:0:10}_"; done
for file_name in `ls *.[jJ][pP][gG]`; do mv $file_name ../${file_name:0:10}_; done
Žádné komentáře:
Okomentovat