Jag vill ange en katalog och låta programvaran hitta alla foton i katalogen och dess underkataloger, och om de innehåller EXIF-datum / tid, det ställer in deras tidstämpel för filsystem så att det matchar EXIF.
Kommentarer
- Naturligtvis skulle jag för närvarande ställa den här frågan på programvarurekommendationer – det har några bra svar här, dock
Svar
Detta är det inversa av Finns det någon programvara som ställer in EXIF-datum baserat på filen ’ s ändringsdatum? , och jag är säker på att alla program som listas där kommer att gälla.
jhead
Av dessa, för denna mycket enkla uppgift, jhead är mitt förslag. Till exempel anger kommandot
jhead -ft *.jpg
en massa filer så att filens tidsstämpel matchar EXIF.
jhead med find
, för att gå igenom underkataloger
För att utföra rekursion till underkataloger kan du kombinera det med kommandot find
tillgängligt på Linux / Unix / Mac (eller Cygwin för Windows):
find . -name "*.jpg" -exec jhead -ft {} +
Eller för att hitta någon av *.JPG *.JPEG *.jpg *.jpeg ...
du kan också prova
find . -iname "*.jp*g" -exec jhead -ft {} +
Du kan också använda Find för att bara visa alla filer som skulle vara. .. hittades utan att utföra något annat kommando (som jhead):
find . -iname "*.jp*g"
Andra verktyg
Andra verktyg som ExifTool eller Exiv2 är mycket mer kapabel, men till priset av komplexitet. Jag kan aldrig komma ihåg de rätta alternativen för att göra vad som helst med dem och måste titta på dokumentationen varje gång, men jhead -ft
är lätt att komma ihåg med mnemonic ”fix time”.
ExifTool
Bara för fullständighet tittade jag dock på dokumentationen och med ExifTool , gör detta:
exiftool -r "-DateTimeOriginal>FileModifyDate" directoryname
(Ta bort -r
om du inte ”t vill ha rekursion, och om du gör det kan du också ge en lista med filer eller ett jokertecken istället för directoryname
.) Och var försiktig med dessa citat – om du kör detta på Windows vill du ha "
istället för "
.
Exiv2
With Exiv2 :
exiv2 -T rename *.jpg
Se upp med små bokstäver -t
(eller utan någon -T
) Exiv2 kommer också att byta namn på filen till ett nytt namn baserat på tidsstämpeln, vilket kan vara mycket förvirrande. Exiv2 gör inte heller rekursion.
Kommentarer
- Du har rätt, det är tvärtom men oändligt mer användbart 🙂
- jhead är mycket användbart för detta – OCH för många andra jpg-filmanipulationer. Var försiktig när du använder den – det är ett extremt kraftfullt verktyg som kan orsaka en viss förödelse om det missbrukas. Jag rekommenderar att du använder den i en batchfil så att du alltid gör vad du tänker, och testar resultatet på en testfiluppsättning först.
- +1 men jag tilldelade mig själv svaret 😉 Bara så andra i framtiden kan hitta ett sätt att göra exakt vad jag frågade …
- @olibre Ja, det fungerar på Linux / Unix eller Mac.
- Jag har märkt att vissa bildwebbläsare är närvarande (diaporama ) bilder endast i filnamnordning (inte på filändringstid). Slutligen använder jag EXIF-tidsstämpeln för att ställa in filtiden OCH för att prefixa filnamnet. Jag använder kommandot
find -name '[0-9][0-9]*' -o -iname '*.jp*g' -type f -exec jhead -ft -n%Y%m%d_%H%M%S_%f {} +
. Förklaringar:-name '[0-9][0-9]*'
för att förhindra att namnge om filer som redan har ett datumprefix ('[0-9][0-9]
för att ta hänsyn till år och månader).-iname '*.jp*g'
kan hoppas över eftersomjhead
endast bearbetar filer som stöds (endast JPEG-filer).%f
för att behålla det ursprungliga filnamnet.
Svar
Irfanview och jhead gör båda vad du vill.
Båda gratis.
Länkar till båda nedan.
jhead är kommandoradsdriven eller kan anropas av andra processer.
Irfanview-version kan anropas från en kommandorad eller internt i en batch eller på en fil efter filbasis.
Exempel nedan för Irfanview visar hur man kopierar i båda riktningarna:
Irfanview
Tillåter GUI- eller kommandoradsändringar av batch eller per fildatum / tidsöverföring från EXIF till filspecifikation eller vice versa (utan någon annan fil ändras om så önskas).
Källa: Fri från www.irfanview.com
Detta är MYCKET enklare och snabbare i praktiken efter bara några användningsområden än att instruktionerna nedan får det att visas. t.ex.
För att konvertera en enda fils datum / tid till EXIF-värden krävs
Shift-J, Alt-F, Enter.
Att se varför de första gångerna tar längre tid.
För att göra detta för ett antal filer LJUDA komplex att lära sig –
Det kräver: T, Ctrl-A, Alt-F, J, Enter, (Alt-F), Ange
(Eller: T, Ctrl- A, Shift-J, Enter) (ger färre alternativ)
MEN det är faktiskt nästan helt intuitivt efter lite användning – menyer guidar dig initialt tills hjärnvägen bildas.
GUI, per fil
Options, JPG lossless rotation (Shift-J) Select "Apply original EXIF date/time to new file" Consider also selecting other options
GUI, en eller flera filer ( via miniatyrvy)
VARNING: ( Tillagt 2020!)
Det har påpekats att att välja fel alternativ kan få ett oönskat resultat – t.ex. alla destinationsfiler inställda på ett enda valt datum och tid. Att göra det rätt är ”inte för svårt” – men Titta på de olika kryssrutorna och bestäm vilken som passar vad du vill göra.
Open Thumbnails view ("File, Thumbnails" or "T" from Window view Select images to change EXIF data of usually all in folder -> Ctrl-A Then: File, "JPG lossless operations" (1) Change EXIF date/time "Change EXIF date/time" Options are offered to set Date/time to specific setting or to move all times back/forwards by selected DHMS amount calculator provided to check result is as desired. (2) Transfer EXIF date / time to file saved date time "Lossless rotation with selected files" [Shift-J] then, as for single file version above Select "Apply original EXIF date/time to new file"
Från kommandoraden – detta är en ”rotera” med INGEN åtgärd förutom att kopiera datum / tid från EXIF till fildatum och tid. Motsatsen kan också uppnås om så önskas. :
-
i_view32.exe file_spec \ *. jpg / jpg_rotate = (0,0,0,1,0,0,0,0)
-
För att kopiera datum / tid i motsatt riktning ((filespec till EXIF)
använda som ovan med (0,0,1,0,0,0,0,0)
jhead
gör nästan vad du än kan föreställa mig med jpeg-filer
Källa: Fri från http://www.sentex.net/~mwandel/jhead/
I använd en batchfil enligt nedan. Andra alternativ är möjliga:
- jhead -ft % 1 .jpg
De säger: Saker som jhead kan ändra i en exif-jpeg-fil
- Högerbilder enligt rotationsmärkning med jpegtran
Ställ in eller relativa justera interna exif-tidsstämplar
Fixa datum- / tidsförskjutningar i stora partier av bilder
Omnamn eller datumstämpelfiler enligt exif tidsstämpel
Överför exif-rubriker mellan bilder
Byt ut miniatyrer inuti Exif-rubriker
Redigera jpeg-kommentarer (men inte Exif-kommentarer)
Ta bort exif- eller kommentarsektioner från jpeg-bilder
Skapa ny minimal exif-rubrik som innehåller datum och miniatyrbild
_________________________
Obs: augusti 2016: ” En anonym användare ”föreslog korrekt att en föreslagen konvertering inte fungerade som jag sa. Jag har lagt till ett omfattande område i det berörda området.
Kommentarer
- Augusti 2016: ” Anonym användare ” föreslog korrekt att en föreslagen konvertering inte fungerade som sagt. Jag ’ har lagt till ett omfattande område i det berörda området.
- Hur är det med råfiler?
- @MichaelClark I ’ är glad att du ställde den frågan :-). Jag noterar att vi alla verkar ha adresserat JPG filer och inte RAW. Jag ’ föreställer mig att du skulle vara en av de mer sannolika människorna som frågar om hur man gör detta med RAW-filer :-).
- BEARARE: Steg 1 under ” GUI, en eller flera filer (via miniatyrvy) ” är vilseledande: den sätter alla valda filer till samma datum och tid (vilket inte är vad som ställdes i frågan). Endast steg 2 leder till det önskade resultatet.
- @Christoph Tack. Jag lade till en allmän varningsanmärkning i början av det avsnittet.
Svar
Bara ett annat EXIF-verktyg för kommandoraden som kan ändra det senast ändrade datumet för filer för att matcha tiden för att ta bilden, baserat på EXIF-metadan i JPEG-bildfilen:
exiv2 -T rename somedir/foo*.jpg
Inga bekymmer, kommandorget rename
är ok där och skadar inte.
Det är bara att filnamnsåtgärden missbrukas för att bara skapa bieffekten av att ändra tidsstämpeln.
Svar
Medan jag verkligen rekommenderar jag inte att jag förlitar mig på fildatum / tid när det gäller dina bilder kan du använda ett gratis verktyg som heter EXIF Date Changer för att ställa in fildatum för alla dina JPG-bilder.Standardinställningen ställer in både det skapade datumet och det datum som modifierats av fildatum till det foto som tagits.
Anledningen till att jag inte rekommenderar att detta är fildatumet uppdateras enkelt. Om du redigerar bilden modifierat datum uppdateras. Om du kopierar bilden får det ett nytt datum.
En mycket bättre lösning är att byta namn på filerna för att inkludera datum / tid i själva filnamnet. Detta möjliggör fortfarande enkel sortering och fungerar bra med bilder lagrade på iPhones / dropbox.
Svar
Kolla in min nya gratisprogramvara ”Photo Date Organizer”: http://photodateorganizer.sourceforge.net/
Kommentarer
- Från SourceForge-sidan: ” Till dig: killdaclick ”. Annonsering av dina egna produkter är inte ’ t förbjudet här, men du bör göra det klart vad din tillhörighet är.
- @PhilipKendall gjort 🙂
Svar
FastStone Image Viewer kan göra detta (version 4.9 används) – välj bara filerna i miniatyrfönstret, högerklicka på dem , välj ”Verktyg”> ”Ändra tidsstämpel” – då kan du antingen använda EXIF-data (med eller utan modifieringar) eller använda helt anpassade, fasta manuella datum / tid.
Kommentarer
- Wow! Det visste jag inte, jag har använt deras skärmbildverktyg i flera år och har inte hittat något bättre. Du får den senaste gratisversionen här ; Jag på ’ behöver inte någon av betalningsfunktionerna. Jag har också använt deras tittare tidigare, men visste inte att den kunde göra det.
Svar
Advance Renamer är den bästa användarvänliga programvaran som är väldigt enkel.
-
Dra och släpp alla bilder till AR (Advance Renamer)
-
Klicka på (Överst till vänster) Lägg till metod -> Nytt namn
-
Klicka på en av bilden längst ner i mitten så ser du en knapp ExifTool som visar alla metadata, klicka bara på en attribut så får du taggen. I det här fallet är det
<ExifTool:DateTimeOriginal>
-
Kopiera detta och klistra in i Nytt namn textruta Du kan lägga till något före eller efter liknande
IMG_<ExifTool:DateTimeOriginal>
,DSC_<ExifTool:DateTimeOriginal>
etc. -
Klicka på Starta batch Höger) Detta kommer att byta namn på alla dina filer med datumet t.ex. 2017_12_01 19_10_12 Det är alltid bra att ha det ursprungliga datumet i filnamnet, eftersom attribut kan gå förlorade men filnamnen vinner inte.
- Dra igen alla bytt namn filer till AR
- Klicka på Ny metod -> Tidsstämpel
- Markera alla 3 kryssrutor Skapa, ändra, komma åt (åtkomst ibland kanske inte bara avmarkera det om det händer)
- Välj Filnamnmönster och klistra in
<Year>_<Month>_<Day> <Hour>_<Min>_<Sec>
- Starta batch.
- Du är bra. Uppdrag uppnått
Svar
Jag hade fullständigt röra med fildatum i mitt bibliotek, men var inte nöjd med något av verktygen. Vissa stöder ingen katalogrekursion, andra kan inte ändra vissa Windows-specifika tidsstämplar, andra är svåra att använda.
Jag skapade en ny kommandoradsverktyg för en enda uppgift – bearbeta allt rekursivt filer i den angivna katalogen för att extrahera EXIF-datum och ställa in fildatum till det.
Verktyget är plattformsoberoende.
Se ExifDate2FS
Svar
Det här är en gammal fråga och det verkar som om det finns några förslag som borde fungera bra, men den jag kom till för att sortera ett filbeställningsproblem efter en Android-telefonuppgradering var det här.
- Vrid upp Windows (för första gången i åldrar)
- Installera ExtFS eller något som kan läsa ext4-partitioner
- Kopiera foton till hårddisk från Micro SD
- Använd attributväxlare ( https://www.petges.lu/home/ ) för att ställa in skapade / modifierade datum till EXIF-datum
- Whack-kort tillbaka i telefon
- Kopiera foton tillbaka till telefon via MTP
Kanske kommer det att vara användbart för någon.
Svar
Jag registrerade mig på StackExchange bara så jag kunde tacka OP för att ha lagt upp detta och lägga till min arbetsgrupp d bc några av kommandona här fungerade inte för mig. Tyvärr, jag ska prata om min process.
Jag är mitt i en ”Låt oss äntligen rensa upp mitt fotoarkiv” eftersom kampen är verklig, särskilt eftersom iCloud och Google Photos tar dem från din enhet och filhantering har lite att gör med det idag (och i tidigare tider var bra tjänster och produkter lite olyckliga och framkallade en konstig slumpmässighet och duplicering som krävde verkliga ansträngningar för att övervinna.)
Jag har använt Flickr för att få bort bilder min maskin när min enhet var för liten för att hålla dem alla. Jag har använt Google Foto på ett konto sedan 2006 så jag hade en uppsättning slumpmässiga dubbletter och unika bilder där uppe, genom dess olika uppladdningsinkarnationer.
När iPhone-fotografering verkligen började gå, skulle jag ansluta via USB, importera dem till min Dropbox som skulle byta namn på dem med en datumstämpel 🙌🏻, lägga dem i en år / månad-mapp med lite av curation för att sortera skärmdumpar och shoppingfoton, och Google Photos såg den arkivmappen för att ladda upp dem. Detta fungerade bra tills iCloud tog bilderna från min iPhone och det visade sig att de krävde ett eget arbetsflöde.
Eftersom duplicering har alltid varit ett STOR problem, ett verktyg som heter Gemini II äntligen gjorde det möjligt att städa upp och arkivera.
För att konsolidera mitt arkiv på en extern enhet bestämde jag mig för att ladda ner alla bilder men det senaste från iCloud (med Image Capture och en USB till min telefon: inte 100% pålitlig), Flickr och Google, och rensa upp allt.
Så upptäckte jag Exif-data: vissa foton (endast vissa) var inte platta filer (se bilden nedan) och visade deras metadata i Finder. De flesta har bara det skapade modifierade datumet synligt. Wh vid jag laddade ner från Flickr (och en del från Google) sparat som om de skapades och ändrades samma dag som jag laddade ner dem. Inte bra. Vissa hade synliga EXIF-data, men många / de flesta såg platt ut. Jag hade tagit bort dubbletter f.Kr. de hade fel tidsstämpel (om de var av samma storlek eller mindre, det vill säga). Att ta reda på Exif-data och tidsstämpel ledde mig hit.
Dropbox-steget har alltid varit viktigt för mig eftersom IMG _ #### eller DSC #### alltid har varit värdelös. Någon frågade mig varför jag inte hoppade över Dropbox-steget och använde Automater för att byta namn på dem. Automater har inte den förmåga jag kan se, men tack vare Jhead kommer det äntligen att fungera.
Jag tänkte på hur jag först installerar jhead och sedan kör jhead genom en katalog rekursivt och oftare än inte, EXIF-data fanns fortfarande i fotofilerna. Resultat: jhead ändrade datum för filerna till vad som fanns i EXIF-data. Inga besvikelser.
Först för Mac-användare: följ installationsinstruktionerna för untar från kommandoraden (Terminal). Om du inte hittar dem för jhead, hittar du allmänna instruktioner för untar och sub på platsen för jhead tarball. Detta fungerade, eftersom nedladdning och försök att installera från kommandoraden verkligen inte gjorde det. Nästa: se till att du installerar Xcode från App Store. Alla Apple-utvecklare behöver det här programmet och det får kommandon att fungera som annars inte ”t. Det behövs för” make ”och” install make ”.
Med hjälp av jhead-verktyget: Jag är inte bekant med att läsa Unix-instruktioner och manualer (man jhead) men bekant nog med CLI att om någon har dokumenterat något någonstans, försöker jag deras alternativ tills något fungerar.
Detta fungerade inte för mig:
[katalog jag vill ha]> hitta-namn ”* .jpg” -exec jhead -ft {} +
Annars på StackExchange hittade jag en annan rekursiv söksträng som jag fick jobba för att hitta (den hade ett -print-alternativ som inte verkade nödvändigt):
find . | grep ".*[.]jpg"
men om jag lade till jhead-kommandot skulle jag få ett felmeddelande om att det inte förstod ”grep”
Dekonstruera söktermer genom att lägga till och ta bort sökalternativ / variabler och försöka få jhead till vara en del av det kommandot fungerade inte förrän jag försökte en gammal konvention:
jhead -ft ./*/*.jpg
Detta sprang igenom en hel lång-katalog och det fungerade inte spotta ut många fel som ”innehåller ingen EXIF-tidsstämpel” eller ”Fel: tid” 0000: 00: 00 00:00:00 ”: kan inte con vert till Unix-tid ”
När jag tittade återstod endast en minoritet av nedladdade gårdagens tidsstämplar. Så jag testade detta på de andra 10 mapparna med filer som jag hade i min ”duplikat” -mapp. Saker daterade 2020 återgick till 2004, 2013, 2012. Jag lärde mig att om du kör igenom samma katalog två gånger, får du inte utdata en andra gång.
Sedan använde jag jhead för att byta namn på mina filer enligt tidsstämpelkonventionen. Det fungerade som en charm; om det ursprungliga filnamnet innehöll betydelse för dig och du vill behålla det, se till att inkludera detta i din valda datumstämpelsträng:
" "%f … *.jpg
Jag tycker nu det är frustrerande att Finder är inkonsekvent med att visa denna information när den kunde. Nedan följer ett exempel på en fil som Finder visar fullständig information för (ovanligt).
Kommentarer
- Hej, välkommen till Photo-SE. Dessa stackbyten är Q & A-platser, där varje svar försöker svara direkt på frågan. De är inte som mer typiska diskussionsforum, som ofta är trådade, och inlägg är svar på varandra lika mycket som (ofta mer än) på det ursprungliga inlägget. Som skrivet är ditt svar väldigt diskussions- och berättelsesorienterat om dina behov och process för ett namnändringsverktyg, snarare än att fokusera på att besvara frågan som ställd.
- På en teknisk detalj, anledningen till att
find -name '*.jpg' -exec jhead -ft {} +
inte ’ fungerar är attfind
behöver en sökväg innan uttryck som-name <...>
ges. Jag ’ har uppdaterat det accepterade / högst röstade svaret för att åtgärda felet. Prova i stället:find . -name '*.jpg' -exec jhead -ft {} +
- Vad får dig att tro att jag inte ’ t startade kommandot från sökvägen till katalogen jag ville ha? Om det inte fungerade ’ fungerade det inte ’ t. Jag hittade min lösning. Det gjorde mitt liv lättare. Så jag publicerade det och gav det vidare. Om verkliga exempel som förklarar saker för icke-programmerare inte är ’, och jag blir skälld för att jag inte är tillräckligt teknisk, vann jag ’ t kommentera igen. Bravo.
- Om du skrev det som du skrev, så där ’ är inget sätt som kommandot fungerar . Dvs inmatningsfel. Vad jag föreslog (
find . -name '*.jpg' -exec jhead -ft {} +
) är vad du skulle behöva använda om du ville köra det från sökvägen till den katalog du ville ha. Punkt som väg betyder ” lokal katalog ”.find
kräver en startande sökväg. Detta är tillgängligt frånfind
’ s manpages. - När det gäller att förklara saker för icke-programmerare: bra svar är absolut önskas på Stack Exchange-webbplatser. Förutsatt dock att de är svar på frågan. Ta en stund för att se den korta Site Tour för att få en uppfattning om hur Stack Exchange-webbplatser skiljer sig från diskussionsorienterade internetforum.
Svar
Jag föreslog det till författaren till PhotoRenamer, som svarade …
PhotoRenamer 3.2 http://www.tgmdev.be/applications/photorenamer/photorenamer.php
Jag lägger till en knapp i fliken ”Alternativ” i menyfliksområdet .. Därifrån kan du välja alternativet för uppdatering av filtidens status för filen ..
För att undvika att använda masken lägger jag också till ett nytt maskattribut:% F. Om du använder den här enkla masken byts namn på filen … med sitt eget namn … Så du är inte skyldig att byta namn på filen som du vill uppdatera filens tidsattribut för …
Svar
Det andra gratisprogrammet är Google Picasa – du kan enkelt byta datum och tid för alla foton:
Trevlig artikel om det: Så här ändrar du ett fotos datum i Picasa till när fotot togs
Kommentarer
- Hur är den här lösningen arbetar du? OP vill ändra datumet för fil så att det motsvarar datumet för EXIF . Det är förmodligen inte vad Picasa gör.