Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  3 926
Hei!

Jeg har en drøss med filer med navn på formatet image.jpg, image(1).jpg, image(2).jpg osv. Jeg ønsker å hente timestamp fra "Sist endret"-metadataen og legge det til i navnet, f.eks. imageyymmdd_hhmmss.jpg eller imageyymmdd_#.jpg, der # bare inkrementerer dersom flere bilder er fra samme dag.

Jeg har faktisk kjøpt bøker om både Shellscripting og Python-scripting, som begge forklarer fint hvordan man lager renaming-scripts. Men jeg klarer ikke å hente ut og ta nytte av denne timestamp-infoen på noen måte.

Er det noen av dere som har noen tips, evt innspill? Og har dere noen sterke meninger om hva som er best til dette formålet av shell scripts og Python? Er det evt noe helt annet som er mye bedre? Det skal kjøres på Mac OS.

Takk for svar!
Er det fra metadata i filen du skal lese datoinformasjon fra, eller vil det også fungere med å dra dette ut fra filsystemet?

Her er i alle fall et kjapt løsningseksempel på sistnevnte.

Kode

#!/bin/bash

fil="2016-10-03-140704_3840x1080_scrot.png"
endret_dato=$(date -r $fil +"%y%m%d_%H%M%S")
echo $endret_dato
I dette tilfellet hvor det ikke er spesielle behov for å installere noe ekstra og arbeidsflyten er såpass enkel er det ingenting i veien for å skrive dette som et shellscript.
Sist endret av m0b; 11. november 2016 kl. 11:41.
Noen hint Python,henter metadata fra filene(sist endret) med getmtime(path)

Kode

from datetime import datetime
from glob import glob
from os.path import basename,getmtime,join
import os

des = '/foo'
for f_name in glob(join(des, '*.jpg')):
    file_name = basename(f_name)
    time_info = getmtime(f_name)
    date = datetime.fromtimestamp(time_info)
    print('{}_{:%Y_%d_%H}'.format(f_name, date))
Out:

Kode

/foo/a.jpg_2016_06_16
/foo/b.jpg_2015_23_03
/foo/c.jpg_2014_03_01
bare inkrementerer dersom flere bilder er fra samme dag
Vis hele sitatet...
Bruk timedelta og sammenlign dato med filer du looper over.
Eg.

Kode

>>> from datetime import datetime,timedelta
>>> today = datetime.today()
>>> today
datetime.datetime(2016, 11, 11, 14, 13, 44, 871685)
>>> one_day_ago = today - timedelta(1)
>>> one_day_ago
datetime.datetime(2016, 11, 10, 14, 13, 44, 871685)
>>> today.day
11
>>> one_day_ago.day
10
Sist endret av snippsat; 11. november 2016 kl. 14:20.