1EXIFTOOL(1)           User Contributed Perl Documentation          EXIFTOOL(1)
2
3
4

NAME

6       exiftool - Read and write meta information in files
7

SYNOPSIS

9   Reading
10       exiftool [OPTIONS] [-TAG...] [--TAG...] FILE...
11
12   Writing
13       exiftool [OPTIONS] -TAG[+-<]=[VALUE]... FILE...
14
15   Copying
16       exiftool [OPTIONS] -tagsFromFile SRCFILE [-SRCTAG[>DSTTAG]...] FILE...
17
18   Other
19       exiftool [ -ver | -list[w|f|r|wf|g[NUM]|d|x] ]
20
21       For specific examples, see the EXAMPLES sections below.
22
23       This documentation is displayed if exiftool is run without an input
24       FILE when one is expected.
25

DESCRIPTION

27       A command-line interface to Image::ExifTool, used for reading and
28       writing meta information in a variety of file types.  FILE is one or
29       more source file names, directory names, or "-" for the standard input.
30       Metadata is read from source files and printed in readable form to the
31       console (or written to output text files with -w).
32
33       To write or delete metadata, tag values are assigned using
34       -TAG=[VALUE], and/or the -geotag, -csv= or -json= options.  To copy or
35       move metadata, the -tagsFromFile feature is used.  By default the
36       original files are preserved with "_original" appended to their names
37       -- be sure to verify that the new files are OK before erasing the
38       originals.  Once in write mode, exiftool will ignore any read-specific
39       options.
40
41       Note:  If FILE is a directory name then only supported file types in
42       the directory are processed (in write mode only writable types are
43       processed).  However, files may be specified by name, or the -ext
44       option may be used to force processing of files with any extension.
45       Hidden files in the directory are also processed.  Adding the -r option
46       causes subdirectories to be processed recursively, but subdirectories
47       with names beginning with "." are skipped unless -r. is used.
48
49       Below is a list of file types and meta information formats currently
50       supported by ExifTool (r = read, w = write, c = create):
51
52         File Types
53         ------------+-------------+-------------+-------------+------------
54         3FR   r     | DR4   r/w/c | ITC   r     | ODP   r     | RIFF  r
55         3G2   r/w   | DSS   r     | J2C   r     | ODS   r     | RSRC  r
56         3GP   r/w   | DV    r     | JNG   r/w   | ODT   r     | RTF   r
57         A     r     | DVB   r/w   | JP2   r/w   | OFR   r     | RW2   r/w
58         AA    r     | DVR-MS r    | JPEG  r/w   | OGG   r     | RWL   r/w
59         AAE   r     | DYLIB r     | JSON  r     | OGV   r     | RWZ   r
60         AAX   r/w   | EIP   r     | K25   r     | OPUS  r     | RM    r
61         ACR   r     | EPS   r/w   | KDC   r     | ORF   r/w   | SEQ   r
62         AFM   r     | EPUB  r     | KEY   r     | OTF   r     | SKETCH r
63         AI    r/w   | ERF   r/w   | LA    r     | PAC   r     | SO    r
64         AIFF  r     | EXE   r     | LFP   r     | PAGES r     | SR2   r/w
65         APE   r     | EXIF  r/w/c | LNK   r     | PBM   r/w   | SRF   r
66         ARQ   r/w   | EXR   r     | LRV   r/w   | PCD   r     | SRW   r/w
67         ARW   r/w   | EXV   r/w/c | M2TS  r     | PCX   r     | SVG   r
68         ASF   r     | F4A/V r/w   | M4A/V r/w   | PDB   r     | SWF   r
69         AVI   r     | FFF   r/w   | MAX   r     | PDF   r/w   | THM   r/w
70         AVIF  r/w   | FITS  r     | MEF   r/w   | PEF   r/w   | TIFF  r/w
71         AZW   r     | FLA   r     | MIE   r/w/c | PFA   r     | TORRENT r
72         BMP   r     | FLAC  r     | MIFF  r     | PFB   r     | TTC   r
73         BPG   r     | FLIF  r/w   | MKA   r     | PFM   r     | TTF   r
74         BTF   r     | FLV   r     | MKS   r     | PGF   r     | TXT   r
75         CHM   r     | FPF   r     | MKV   r     | PGM   r/w   | VCF   r
76         COS   r     | FPX   r     | MNG   r/w   | PLIST r     | VRD   r/w/c
77         CR2   r/w   | GIF   r/w   | MOBI  r     | PICT  r     | VSD   r
78         CR3   r/w   | GPR   r/w   | MODD  r     | PMP   r     | WAV   r
79         CRM   r/w   | GZ    r     | MOI   r     | PNG   r/w   | WDP   r/w
80         CRW   r/w   | HDP   r/w   | MOS   r/w   | PPM   r/w   | WEBP  r
81         CS1   r/w   | HDR   r     | MOV   r/w   | PPT   r     | WEBM  r
82         CSV   r     | HEIC  r/w   | MP3   r     | PPTX  r     | WMA   r
83         DCM   r     | HEIF  r/w   | MP4   r/w   | PS    r/w   | WMV   r
84         DCP   r/w   | HTML  r     | MPC   r     | PSB   r/w   | WTV   r
85         DCR   r     | ICC   r/w/c | MPG   r     | PSD   r/w   | WV    r
86         DFONT r     | ICS   r     | MPO   r/w   | PSP   r     | X3F   r/w
87         DIVX  r     | IDML  r     | MQV   r/w   | QTIF  r/w   | XCF   r
88         DJVU  r     | IIQ   r/w   | MRW   r/w   | R3D   r     | XLS   r
89         DLL   r     | IND   r/w   | MXF   r     | RA    r     | XLSX  r
90         DNG   r/w   | INSP  r/w   | NEF   r/w   | RAF   r/w   | XMP   r/w/c
91         DOC   r     | INSV  r     | NRW   r/w   | RAM   r     | ZIP   r
92         DOCX  r     | INX   r     | NUMBERS r   | RAR   r     |
93         DPX   r     | ISO   r     | O     r     | RAW   r/w   |
94
95         Meta Information
96         ----------------------+----------------------+---------------------
97         EXIF           r/w/c  |  CIFF           r/w  |  Ricoh RMETA    r
98         GPS            r/w/c  |  AFCP           r/w  |  Picture Info   r
99         IPTC           r/w/c  |  Kodak Meta     r/w  |  Adobe APP14    r
100         XMP            r/w/c  |  FotoStation    r/w  |  MPF            r
101         MakerNotes     r/w/c  |  PhotoMechanic  r/w  |  Stim           r
102         Photoshop IRB  r/w/c  |  JPEG 2000      r    |  DPX            r
103         ICC Profile    r/w/c  |  DICOM          r    |  APE            r
104         MIE            r/w/c  |  Flash          r    |  Vorbis         r
105         JFIF           r/w/c  |  FlashPix       r    |  SPIFF          r
106         Ducky APP12    r/w/c  |  QuickTime      r    |  DjVu           r
107         PDF            r/w/c  |  Matroska       r    |  M2TS           r
108         PNG            r/w/c  |  MXF            r    |  PE/COFF        r
109         Canon VRD      r/w/c  |  PrintIM        r    |  AVCHD          r
110         Nikon Capture  r/w/c  |  FLAC           r    |  ZIP            r
111         GeoTIFF        r/w/c  |  ID3            r    |  (and more)
112

OPTIONS

114       Case is not significant for any command-line option (including tag and
115       group names), except for single-character options when the
116       corresponding upper-case option exists.  Many single-character options
117       have equivalent long-name versions (shown in brackets), and some
118       options have inverses which are invoked with a leading double-dash.
119       Unrecognized options are interpreted as tag names (for this reason,
120       multiple single-character options may NOT be combined into one
121       argument).  Contrary to standard practice, options may appear after
122       source file names on the exiftool command line.
123
124   Option Overview
125       Tag operations
126
127         -TAG or --TAG                    Extract or exclude specified tag
128         -TAG[+-^]=[VALUE]                Write new value for tag
129         -TAG[+-]<=DATFILE                Write tag value from contents of file
130         -TAG[+-]<SRCTAG                  Copy tag value (see -tagsFromFile)
131
132         -tagsFromFile SRCFILE            Copy tag values from file
133         -x TAG      (-exclude)           Exclude specified tag
134
135       Input-output text formatting
136
137         -args       (-argFormat)         Format metadata as exiftool arguments
138         -b          (-binary)            Output metadata in binary format
139         -c FMT      (-coordFormat)       Set format for GPS coordinates
140         -charset [[TYPE=]CHARSET]        Specify encoding for special characters
141         -csv[[+]=CSVFILE]                Export/import tags in CSV format
142         -d FMT      (-dateFormat)        Set format for date/time values
143         -D          (-decimal)           Show tag ID numbers in decimal
144         -E,-ex,-ec  (-escape(HTML|XML|C))Escape tag values for HTML, XML or C
145         -f          (-forcePrint)        Force printing of all specified tags
146         -g[NUM...]  (-groupHeadings)     Organize output by tag group
147         -G[NUM...]  (-groupNames)        Print group name for each tag
148         -h          (-htmlFormat)        Use HTML formatting for output
149         -H          (-hex)               Show tag ID numbers in hexadecimal
150         -htmlDump[OFFSET]                Generate HTML-format binary dump
151         -j[[+]=JSONFILE] (-json)         Export/import tags in JSON format
152         -l          (-long)              Use long 2-line output format
153         -L          (-latin)             Use Windows Latin1 encoding
154         -lang [LANG]                     Set current language
155         -listItem INDEX                  Extract specific item from a list
156         -n          (--printConv)        No print conversion
157         -p FMTFILE  (-printFormat)       Print output in specified format
158         -php                             Export tags as a PHP Array
159         -s[NUM]     (-short)             Short output format
160         -S          (-veryShort)         Very short output format
161         -sep STR    (-separator)         Set separator string for list items
162         -sort                            Sort output alphabetically
163         -struct                          Enable output of structured information
164         -t          (-tab)               Output in tab-delimited list format
165         -T          (-table)             Output in tabular format
166         -v[NUM]     (-verbose)           Print verbose messages
167         -w[+|!] EXT (-textOut)           Write (or overwrite!) output text files
168         -W[+|!] FMT (-tagOut)            Write output text file for each tag
169         -Wext EXT   (-tagOutExt)         Write only specified file types with -W
170         -X          (-xmlFormat)         Use RDF/XML output format
171
172       Processing control
173
174         -a          (-duplicates)        Allow duplicate tags to be extracted
175         -e          (--composite)        Do not generate composite tags
176         -ee         (-extractEmbedded)   Extract information from embedded files
177         -ext[+] EXT (-extension)         Process files with specified extension
178         -F[OFFSET]  (-fixBase)           Fix the base for maker notes offsets
179         -fast[NUM]                       Increase speed when extracting metadata
180         -fileOrder[NUM] [-]TAG           Set file processing order
181         -i DIR      (-ignore)            Ignore specified directory name
182         -if[NUM] EXPR                    Conditionally process files
183         -m          (-ignoreMinorErrors) Ignore minor errors and warnings
184         -o OUTFILE  (-out)               Set output file or directory name
185         -overwrite_original              Overwrite original by renaming tmp file
186         -overwrite_original_in_place     Overwrite original by copying tmp file
187         -P          (-preserve)          Preserve file modification date/time
188         -password PASSWD                 Password for processing protected files
189         -progress[:[TITLE]]              Show file progress count
190         -q          (-quiet)             Quiet processing
191         -r[.]       (-recurse)           Recursively process subdirectories
192         -scanForXMP                      Brute force XMP scan
193         -u          (-unknown)           Extract unknown tags
194         -U          (-unknown2)          Extract unknown binary tags too
195         -wm MODE    (-writeMode)         Set mode for writing/creating tags
196         -z          (-zip)               Read/write compressed information
197
198       Other options
199
200         -@ ARGFILE                       Read command-line arguments from file
201         -k          (-pause)             Pause before terminating
202         -list[w|f|wf|g[NUM]|d|x]         List various exiftool capabilities
203         -ver                             Print exiftool version number
204         --                               End of options
205
206       Special features
207
208         -geotag TRKFILE                  Geotag images from specified GPS log
209         -globalTimeShift SHIFT           Shift all formatted date/time values
210         -use MODULE                      Add features from plug-in module
211
212       Utilities
213
214         -delete_original[!]              Delete "_original" backups
215         -restore_original                Restore from "_original" backups
216
217       Advanced options
218
219         -api OPT[[^]=[VAL]]              Set ExifTool API option
220         -common_args                     Define common arguments
221         -config CFGFILE                  Specify configuration file name
222         -echo[NUM] TEXT                  Echo text to stdout or stderr
223         -efile[NUM][!] ERRFILE           Save names of files with errors
224         -execute[NUM]                    Execute multiple commands on one line
225         -srcfile FMT                     Process a different source file
226         -stay_open FLAG                  Keep reading -@ argfile even after EOF
227         -userParam PARAM[[^]=[VAL]]      Set user parameter (API UserParam opt)
228
229   Option Details
230       Tag operations
231
232       -TAG Extract information for the specified tag (eg. "-CreateDate").
233            Multiple tags may be specified in a single command.  A tag name is
234            the handle by which a piece of information is referenced.  See
235            Image::ExifTool::TagNames for documentation on available tag
236            names.  A tag name may include leading group names separated by
237            colons (eg. "-EXIF:CreateDate", or "-Doc1:XMP:Creator"), and each
238            group name may be prefixed by a digit to specify family number
239            (eg.  "-1IPTC:City").  Use the -listg option to list available
240            group names by family.
241
242            A special tag name of "All" may be used to indicate all meta
243            information (ie. -All).  This is particularly useful when a group
244            name is specified to extract all information in a group (but
245            beware that unless the -a option is also used, some tags in the
246            group may be suppressed by same-named tags in other groups).  The
247            wildcard characters "?" and "*" may be used in a tag name to match
248            any single character and zero or more characters respectively.
249            These may not be used in a group name, with the exception that a
250            group name of "*" (or "All") may be used to extract all instances
251            of a tag (as if -a was used).  Note that arguments containing
252            wildcards must be quoted on the command line of most systems to
253            prevent shell globbing.
254
255            A "#" may be appended to the tag name to disable the print
256            conversion on a per-tag basis (see the -n option).  This may also
257            be used when writing or copying tags.
258
259            If no tags are specified, all available information is extracted
260            (as if "-All" had been specified).
261
262            Note:  Descriptions, not tag names, are shown by default when
263            extracting information.  Use the -s option to see the tag names
264            instead.
265
266       --TAG
267            Exclude specified tag from extracted information.  Same as the -x
268            option.  Group names and wildcards are permitted as described
269            above for -TAG.  Once excluded from the output, a tag may not be
270            re-included by a subsequent option.  May also be used following a
271            -tagsFromFile option to exclude tags from being copied (when
272            redirecting to another tag, it is the source tag that should be
273            excluded), or to exclude groups from being deleted when deleting
274            all information (eg. "-all= --exif:all" deletes all but EXIF
275            information).  But note that this will not exclude individual tags
276            from a group delete (unless a family 2 group is specified, see
277            note 4 below).  Instead, individual tags may be recovered using
278            the -tagsFromFile option (eg. "-all= -tagsfromfile @ -artist").
279
280       -TAG[+-^]=[VALUE]
281            Write a new value for the specified tag (eg. "-comment=wow"), or
282            delete the tag if no VALUE is given (eg. "-comment=").  "+=" and
283            "-=" are used to add or remove existing entries from a list, or to
284            shift date/time values (see Image::ExifTool::Shift.pl and note 6
285            below for more details).  "+=" may also be used to increment
286            numerical values (or decrement if VALUE is negative), and "-=" may
287            be used to conditionally delete or replace a tag (see "WRITING
288            EXAMPLES" for examples).  "^=" is used to write an empty string
289            instead of deleting the tag when no VALUE is given, but otherwise
290            it is equivalent to "=".
291
292            TAG may contain one or more leading family 0, 1 or 2 group names,
293            prefixed by optional family numbers, and separated colons.  If no
294            group name is specified, the tag is created in the preferred
295            group, and updated in any other location where a same-named tag
296            already exists.  The preferred group is the first group in the
297            following list where TAG is valid: 1) EXIF, 2) IPTC, 3) XMP.
298
299            The wildcards "*" and "?" may be used in tag names to assign the
300            same value to multiple tags.  When specified with wildcards,
301            "unsafe" tags are not written.  A tag name of "All" is equivalent
302            to "*" (except that it doesn't require quoting, while arguments
303            with wildcards do on systems with shell globbing), and is often
304            used when deleting all metadata (ie. "-All=") or an entire group
305            (eg. "-XMP-dc:All=", see note 4 below).  Note that not all groups
306            are deletable, and that the JPEG APP14 "Adobe" group is not
307            removed by default with "-All=" because it may affect the
308            appearance of the image.  However, color space information is
309            removed, so the colors may be affected (but this may be avoided by
310            copying back the tags defined by the ColorSpaceTags shortcut).
311            Use the -listd option for a complete list of deletable groups, and
312            see note 5 below regarding the "APP" groups.  Also, within an
313            image some groups may be contained within others, and these groups
314            are removed if the containing group is deleted:
315
316              JPEG Image:
317              - Deleting EXIF or IFD0 also deletes ExifIFD, GlobParamIFD,
318                GPS, IFD1, InteropIFD, MakerNotes, PrintIM and SubIFD.
319              - Deleting ExifIFD also deletes InteropIFD and MakerNotes.
320              - Deleting Photoshop also deletes IPTC.
321
322              TIFF Image:
323              - Deleting EXIF only removes ExifIFD which also deletes
324                InteropIFD and MakerNotes.
325
326            Notes:
327
328            1) Many tag values may be assigned in a single command.  If two
329            assignments affect the same tag, the latter takes precedence
330            (except for list-type tags, for which both values are written).
331
332            2) In general, MakerNotes tags are considered "Permanent", and may
333            be edited but not created or deleted individually.  This avoids
334            many potential problems, including the inevitable compatibility
335            problems with OEM software which may be very inflexible about the
336            information it expects to find in the maker notes.
337
338            3) Changes to PDF files by ExifTool are reversible (by deleting
339            the update with "-PDF-update:all=") because the original
340            information is never actually deleted from the file.  So ExifTool
341            alone may not be used to securely edit metadata in PDF files.
342
343            4) Specifying "-GROUP:all=" deletes the entire group as a block
344            only if a single family 0 or 1 group is specified.  Otherwise all
345            deletable tags in the specified group(s) are removed individually,
346            and in this case is it possible to exclude individual tags from a
347            mass delete.  For example, "-time:all --Exif:Time:All" removes all
348            deletable Time tags except those in the EXIF.  This difference
349            also applies if family 2 is specified when deleting all groups.
350            For example, "-2all:all=" deletes tags individually, while
351            "-all:all=" deletes entire blocks.
352
353            5) The "APP" group names ("APP0" through "APP15") are used to
354            delete JPEG application segments which are not associated with
355            another deletable group.  For example, specifying "-APP14:All="
356            will NOT delete the APP14 "Adobe" segment because this is
357            accomplished with "-Adobe:All".
358
359            6) When shifting a value, the shift is applied to the original
360            value of the tag, overriding any other values previously assigned
361            to the tag on the same command line.  To shift a date/time value
362            and copy it to another tag in the same operation, use the
363            -globalTimeShift option.
364
365            Special feature:  Integer values may be specified in hexadecimal
366            with a leading "0x", and simple rational values may be specified
367            as fractions.
368
369       -TAG<=DATFILE or -TAG<=FMT
370            Set the value of a tag from the contents of file DATFILE.  The
371            file name may also be given by a FMT string where %d, %f and %e
372            represent the directory, file name and extension of the original
373            FILE (see the -w option for more details).  Note that quotes are
374            required around this argument to prevent shell redirection since
375            it contains a "<" symbol.  If DATFILE/FMT is not provided, the
376            effect is the same as "-TAG=", and the tag is simply deleted.
377            "+<=" or "-<=" may also be used to add or delete specific list
378            entries, or to shift date/time values.
379
380       -tagsFromFile SRCFILE or FMT
381            Copy tag values from SRCFILE to FILE.  Tag names on the command
382            line after this option specify the tags to be copied, or excluded
383            from the copy.  Wildcards are permitted in these tag names.  If no
384            tags are specified, then all possible tags (see note 1 below) from
385            the source file are copied to same-named tags in the preferred
386            location of the output file (the same as specifying "-all").  More
387            than one -tagsFromFile option may be used to copy tags from
388            multiple files.
389
390            By default, this option will update any existing and writable
391            same-named tags in the output FILE, but will create new tags only
392            in their preferred groups.  This allows some information to be
393            automatically transferred to the appropriate group when copying
394            between images of different formats. However, if a group name is
395            specified for a tag then the information is written only to this
396            group (unless redirected to another group, see below).  If "All"
397            is used as a group name, then the specified tag(s) are written to
398            the same family 1 group they had in the source file (ie. the same
399            specific location, like ExifIFD or XMP-dc).  For example, the
400            common operation of copying all writable tags to the same specific
401            locations in the output FILE is achieved by adding "-all:all".  A
402            different family may be specified by adding a leading family
403            number to the group name (eg. "-0all:all" preserves the same
404            general location, like EXIF or XMP).
405
406            SRCFILE may be the same as FILE to move information around within
407            a single file.  In this case, "@" may be used to represent the
408            source file (ie. "-tagsFromFile @"), permitting this feature to be
409            used for batch processing multiple files.  Specified tags are then
410            copied from each file in turn as it is rewritten.  For advanced
411            batch use, the source file name may also be specified using a FMT
412            string in which %d, %f and %e represent the directory, file name
413            and extension of FILE.  (eg. the current FILE would be represented
414            by "%d%f.%e", with the same effect as "@").  See the -w option for
415            FMT string examples.
416
417            A powerful redirection feature allows a destination tag to be
418            specified for each copied tag.  With this feature, information may
419            be written to a tag with a different name or group.  This is done
420            using "'-DSTTAG<SRCTAG'" or "'-SRCTAG>DSTTAG'" on the command line
421            after -tagsFromFile, and causes the value of SRCTAG to be copied
422            from SRCFILE and written to DSTTAG in FILE.  Has no effect unless
423            SRCTAG exists in SRCFILE.  Note that this argument must be quoted
424            to prevent shell redirection, and there is no "=" sign as when
425            assigning new values.  Source and/or destination tags may be
426            prefixed by a group name and/or suffixed by "#".  Wildcards are
427            allowed in both the source and destination tag names.  A
428            destination group and/or tag name of "All" or "*" writes to the
429            same family 1 group and/or tag name as the source.  If no
430            destination group is specified, the information is written to the
431            preferred group.  Whitespace around the ">" or "<" is ignored. As
432            a convenience, "-tagsFromFile @" is assumed for any redirected
433            tags which are specified without a prior -tagsFromFile option.
434            Copied tags may also be added or deleted from a list with
435            arguments of the form "'-SRCTAG+<DSTTAG'" or "'-SRCTAG-<DSTTAG'"
436            (but see Note 5 below).
437
438            An extension of the redirection feature allows strings involving
439            tag names to be used on the right hand side of the "<" symbol with
440            the syntax "'-DSTTAG<STR'", where tag names in STR are prefixed
441            with a "$" symbol.  See the -p option and the "Advanced formatting
442            feature" section for more details about this syntax.  Strings
443            starting with a "=" sign must insert a single space after the "<"
444            to avoid confusion with the "<=" operator which sets the tag value
445            from the contents of a file.  A single space at the start of the
446            string is removed if it exists, but all other whitespace in the
447            string is preserved.  See note 8 below about using the redirection
448            feature with list-type stags, shortcuts or when using wildcards in
449            tag names.
450
451            See "COPYING EXAMPLES" for examples using -tagsFromFile.
452
453            Notes:
454
455            1) Some tags (generally tags which may affect the appearance of
456            the image) are considered "unsafe" to write, and are only copied
457            if specified explicitly (ie. no wildcards).  See the tag name
458            documentation for more details about "unsafe" tags.
459
460            2) Be aware of the difference between excluding a tag from being
461            copied (--TAG), and deleting a tag (-TAG=).  Excluding a tag
462            prevents it from being copied to the destination image, but
463            deleting will remove a pre-existing tag from the image.
464
465            3) The maker note information is copied as a block, so it isn't
466            affected like other information by subsequent tag assignments on
467            the command line, and individual makernote tags may not be
468            excluded from a block copy.  Also, since the PreviewImage
469            referenced from the maker notes may be rather large, it is not
470            copied, and must be transferred separately if desired.
471
472            4) The order of operations is to copy all specified tags at the
473            point of the -tagsFromFile option in the command line.  Any tag
474            assignment to the right of the -tagsFromFile option is made after
475            all tags are copied.  For example, new tag values are set in the
476            order One, Two, Three then Four with this command:
477
478                exiftool -One=1 -tagsFromFile s.jpg -Two -Four=4 -Three d.jpg
479
480            This is significant in the case where an overlap exists between
481            the copied and assigned tags because later operations may override
482            earlier ones.
483
484            5) The normal behaviour of copied tags differs from that of
485            assigned tags for list-type tags and conditional replacements
486            because each copy operation on a tag overrides any previous
487            operations.  While this avoids duplicate list items when copying
488            groups of tags from a file containing redundant information, it
489            also prevents values of different tags from being copied into the
490            same list when this is the intent.  So a -addTagsFromFile option
491            is provided which allows copying of multiple tags into the same
492            list.  eg)
493
494                exiftool -addtagsfromfile @ '-subject<make' '-subject<model' ...
495
496            Similarly, -addTagsFromFile must be used when conditionally
497            replacing a tag to prevent overriding earlier conditions.
498
499            Other than these differences, the -tagsFromFile and
500            -addTagsFromFile options are equivalent.
501
502            6) The -a option (allow duplicate tags) is always in effect when
503            copying tags from SRCFILE, but the highest priority tag is always
504            copied last so it takes precedence.
505
506            7) Structured tags are copied by default when copying tags.  See
507            the -struct option for details.
508
509            8) With the redirection feature, copying a tag directly (ie.
510            "'-DSTTAG<SRCTAG'") is not the same as interpolating its value
511            inside a string (ie. "'-DSTTAG<$SRCTAG'") for list-type tags,
512            shortcut tags, tag names containing wildcards, or UserParam
513            variables.  When copying directly, the values of each matching
514            source tag are copied individually to the destination tag (as if
515            they were separate assignments).  However, when interpolated
516            inside a string, list items and the values of shortcut tags are
517            concatenated (with a separator set by the -sep option), and
518            wildcards are not allowed.  Also, UserParam variables are
519            available only when interpolated in a string.  Another difference
520            is that a minor warning is generated if a tag doesn't exist when
521            interpolating its value in a string (with "$"), but isn't when
522            copying the tag directly.
523
524            Finally, the behaviour is different when a destination tag or
525            group of "All" is used.  When copying directly, a destination
526            group and/or tag name of "All" writes to the same family 1 group
527            and/or tag name as the source.  But when interpolated in a string,
528            the identity of the source tags are lost and the value is written
529            to all possible groups/tags.  For example, the string form must be
530            used in the following command since the intent is to set the value
531            of all existing date/time tags from "CreateDate":
532
533                exiftool "-time:all<$createdate" -wm w FILE
534
535       -x TAG (-exclude)
536            Exclude the specified tag.  There may be multiple -x options.
537            This has the same effect as --TAG on the command line.  See the
538            --TAG documentation above for a complete description.
539
540       Input-output text formatting
541
542       Note that trailing spaces are removed from extracted values for most
543       output text formats.  The exceptions are "-b", "-csv", "-j" and "-X".
544
545       -args (-argFormat)
546            Output information in the form of exiftool arguments, suitable for
547            use with the -@ option when writing.  May be combined with the -G
548            option to include group names.  This feature may be used to
549            effectively copy tags between images, but allows the metadata to
550            be altered by editing the intermediate file ("out.args" in this
551            example):
552
553                exiftool -args -G1 --filename --directory src.jpg > out.args
554                exiftool -@ out.args -sep ", " dst.jpg
555
556            Note:  Be careful when copying information with this technique
557            since it is easy to write tags which are normally considered
558            "unsafe".  For instance, the FileName and Directory tags are
559            excluded in the example above to avoid renaming and moving the
560            destination file.  Also note that the second command above will
561            produce warning messages for any tags which are not writable.
562
563            As well, the -sep option should be used as in the second command
564            above to maintain separate list items when writing metadata back
565            to image files, and the -struct option may be used when extracting
566            to preserve structured XMP information.
567
568       -b (-binary)
569            Output requested metadata in binary format without tag names or
570            descriptions.  This option is mainly used for extracting embedded
571            images or other binary data, but it may also be useful for some
572            text strings since control characters (such as newlines) are not
573            replaced by '.' as they are in the default output.  By default,
574            list items are separated by a newline when extracted with the -b
575            option, but this may be changed (see the -sep option for details).
576            May be combined with "-j", "-php" or "-X" to extract binary data
577            in JSON, PHP or XML format, but note that "unsafe" tags must be
578            specified explicitly to be extracted as binary in these formats.
579
580       -c FMT (-coordFormat)
581            Set the print format for GPS coordinates.  FMT uses the same
582            syntax as a "printf" format string.  The specifiers correspond to
583            degrees, minutes and seconds in that order, but minutes and
584            seconds are optional.  For example, the following table gives the
585            output for the same coordinate using various formats:
586
587                        FMT                  Output
588                -------------------    ------------------
589                "%d deg %d' %.2f"\"    54 deg 59' 22.80"  (default for reading)
590                "%d %d %.8f"           54 59 22.80000000  (default for copying)
591                "%d deg %.4f min"      54 deg 59.3800 min
592                "%.6f degrees"         54.989667 degrees
593
594            Notes:
595
596            1) To avoid loss of precision, the default coordinate format is
597            different when copying tags using the -tagsFromFile option.
598
599            2) If the hemisphere is known, a reference direction (N, S, E or
600            W) is appended to each printed coordinate, but adding a "+" to the
601            format specifier (eg. "%+.6f") prints a signed coordinate instead.
602
603            3) This print formatting may be disabled with the -n option to
604            extract coordinates as signed decimal degrees.
605
606       -charset [[TYPE=]CHARSET]
607            If TYPE is "ExifTool" or not specified, this option sets the
608            ExifTool character encoding for output tag values when reading and
609            input values when writing, with a default of "UTF8".  If no
610            CHARSET is given, a list of available character sets is returned.
611            Valid CHARSET values are:
612
613                CHARSET     Alias(es)        Description
614                ----------  ---------------  ----------------------------------
615                UTF8        cp65001, UTF-8   UTF-8 characters (default)
616                Latin       cp1252, Latin1   Windows Latin1 (West European)
617                Latin2      cp1250           Windows Latin2 (Central European)
618                Cyrillic    cp1251, Russian  Windows Cyrillic
619                Greek       cp1253           Windows Greek
620                Turkish     cp1254           Windows Turkish
621                Hebrew      cp1255           Windows Hebrew
622                Arabic      cp1256           Windows Arabic
623                Baltic      cp1257           Windows Baltic
624                Vietnam     cp1258           Windows Vietnamese
625                Thai        cp874            Windows Thai
626                DOSLatinUS  cp437            DOS Latin US
627                DOSLatin1   cp850            DOS Latin1
628                DOSCyrillic cp866            DOS Cyrillic
629                MacRoman    cp10000, Roman   Macintosh Roman
630                MacLatin2   cp10029          Macintosh Latin2 (Central Europe)
631                MacCyrillic cp10007          Macintosh Cyrillic
632                MacGreek    cp10006          Macintosh Greek
633                MacTurkish  cp10081          Macintosh Turkish
634                MacRomanian cp10010          Macintosh Romanian
635                MacIceland  cp10079          Macintosh Icelandic
636                MacCroatian cp10082          Macintosh Croatian
637
638            TYPE may be "FileName" to specify the encoding of file names on
639            the command line (ie. FILE arguments).  In Windows, this triggers
640            use of wide-character i/o routines, thus providing support for
641            Unicode file names.  See the "WINDOWS UNICODE FILE NAMES" section
642            below for details.
643
644            Other values of TYPE listed below are used to specify the internal
645            encoding of various meta information formats.
646
647                TYPE       Description                                  Default
648                ---------  -------------------------------------------  -------
649                EXIF       Internal encoding of EXIF "ASCII" strings    (none)
650                ID3        Internal encoding of ID3v1 information       Latin
651                IPTC       Internal IPTC encoding to assume when        Latin
652                            IPTC:CodedCharacterSet is not defined
653                Photoshop  Internal encoding of Photoshop IRB strings   Latin
654                QuickTime  Internal encoding of QuickTime strings       MacRoman
655                RIFF       Internal encoding of RIFF strings            0
656
657            See <https://exiftool.org/faq.html#Q10> for more information about
658            coded character sets, and the Image::ExifTool Options for more
659            details about the -charset settings.
660
661       -csv[[+]=CSVFILE]
662            Export information in CSV format, or import information if CSVFILE
663            is specified.  When importing, the CSV file must be in exactly the
664            same format as the exported file.  The first row of the CSVFILE
665            must be the ExifTool tag names (with optional group names) for
666            each column of the file, and values must be separated by commas.
667            A special "SourceFile" column specifies the files associated with
668            each row of information (and a SourceFile of "*" may be used to
669            define default tags to be imported for all files which are
670            combined with any tags specified for the specific SourceFile
671            processed).  The following examples demonstrate basic use of this
672            option:
673
674                # generate CSV file with common tags from all images in a directory
675                exiftool -common -csv dir > out.csv
676
677                # update metadata for all images in a directory from CSV file
678                exiftool -csv=a.csv dir
679
680            Empty values are ignored when importing (unless the -f option is
681            used and the API MissingTagValue is set to an empty string, in
682            which case the tag is deleted).  Also, FileName and Directory
683            columns are ignored if they exist (ie. ExifTool will not attempt
684            to write these tags with a CSV import).  To force a tag to be
685            deleted, use the -f option and set the value to "-" in the CSV
686            file (or to the MissingTagValue if this API option was used).
687            Multiple databases may be imported in a single command.
688
689            When exporting a CSV file, the -g or -G option adds group names to
690            the tag headings.  If the -a option is used to allow duplicate tag
691            names, the duplicate tags are only included in the CSV output if
692            the column headings are unique.  Adding the -G4 option ensures a
693            unique column heading for each tag.  The -b option may be added to
694            output binary data, encoded in base64 if necessary (indicated by
695            ASCII "base64:" as the first 7 bytes of the value).  Values may
696            also be encoded in base64 if the -charset option is used and the
697            value contains invalid characters.
698
699            When exporting specific tags, the CSV columns are arranged in the
700            same order as the specified tags provided the column headings
701            exactly match the specified tag names, otherwise the columns are
702            sorted in alphabetical order.
703
704            When importing from a CSV file, only files specified on the
705            command line are processed.  Any extra entries in the CSV file are
706            ignored.
707
708            List-type tags are stored as simple strings in a CSV file, but the
709            -sep option may be used to split them back into separate items
710            when importing.
711
712            Special feature:  -csv+=CSVFILE may be used to add items to
713            existing lists.  This affects only list-type tags.  Also applies
714            to the -j option.
715
716            Note that this option is fundamentally different than all other
717            output format options because it requires information from all
718            input files to be buffered in memory before the output is written.
719            This may result in excessive memory usage when processing a very
720            large number of files with a single command.  Also, it makes this
721            option incompatible with the -w option.  When processing a large
722            number of files, it is recommended to either use the JSON (-j) or
723            XML (-X) output format, or use -p to generate a fixed-column CSV
724            file instead of using the -csv option.
725
726       -d FMT (-dateFormat)
727            Set the format for date/time tag values.  The FMT string may
728            contain formatting codes beginning with a percent character ("%")
729            to represent the various components of a date/time value.  The
730            specifics of the FMT syntax are system dependent -- consult the
731            "strftime" man page on your system for details.  The default
732            format is equivalent to "%Y:%m:%d %H:%M:%S".  This option has no
733            effect on date-only or time-only tags and ignores timezone
734            information if present.  Only one -d option may be used per
735            command.  Requires POSIX::strptime or Time::Piece for the
736            inversion conversion when writing.
737
738       -D (-decimal)
739            Show tag ID number in decimal when extracting information.
740
741       -E, -ex, -ec (-escapeHTML, -escapeXML, -escapeC)
742            Escape characters in output tag values for HTML (-E), XML (-ex) or
743            C (-ec).  For HTML, all characters with Unicode code points above
744            U+007F are escaped as well as the following 5 characters: &
745            (&amp;) ' (&#39;) " (&quot;) > (&gt;) and < (&lt;).  For XML, only
746            these 5 characters are escaped.  The -E option is implied with -h,
747            and -ex is implied with -X.  For C, all control characters and the
748            backslash are escaped.  The inverse conversion is applied when
749            writing tags.
750
751       -f (-forcePrint)
752            Force printing of tags even if their values are not found.  This
753            option only applies when specific tags are requested on the
754            command line (ie. not with wildcards or by "-all").  With this
755            option, a dash ("-") is printed for the value of any missing tag,
756            but the dash may be changed via the API MissingTagValue option.
757            May also be used to add a 'flags' attribute to the -listx output,
758            or to allow tags to be deleted when writing with the -csv=CSVFILE
759            feature.
760
761       -g[NUM][:NUM...] (-groupHeadings)
762            Organize output by tag group.  NUM specifies a group family
763            number, and may be 0 (general location), 1 (specific location), 2
764            (category), 3 (document number), 4 (instance number), 5 (metadata
765            path) or 6 (EXIF/TIFF format).  -g0 is assumed if a family number
766            is not specified, and family numbers may be added wherever -g is
767            mentioned in the documentation.  Multiple families may be
768            specified by separating them with colons.  By default the
769            resulting group name is simplified by removing any leading "Main:"
770            and collapsing adjacent identical group names, but this can be
771            avoided by placing a colon before the first family number (eg.
772            -g:3:1).  Use the -listg option to list group names for a
773            specified family.  The SavePath and SaveFormat API options are
774            automatically enabled if the respective family 5 or 6 group names
775            are requested.  See the API GetGroup documentation for more
776            information.
777
778       -G[NUM][:NUM...] (-groupNames)
779            Same as -g but print group name for each tag.  -G0 is assumed if
780            NUM is not specified.  May be combined with a number of other
781            options to add group names to the output.  Note that NUM may be
782            added wherever -G is mentioned in the documentation.  See the -g
783            option above for details.
784
785       -h (-htmlFormat)
786            Use HTML table formatting for output.  Implies the -E option.  The
787            formatting options -D, -H, -g, -G, -l and -s may be used in
788            combination with -h to influence the HTML format.
789
790       -H (-hex)
791            Show tag ID number in hexadecimal when extracting information.
792
793       -htmlDump[OFFSET]
794            Generate a dynamic web page containing a hex dump of the EXIF
795            information.  This can be a very powerful tool for low-level
796            analysis of EXIF information.  The -htmlDump option is also
797            invoked if the -v and -h options are used together.  The verbose
798            level controls the maximum length of the blocks dumped.  An OFFSET
799            may be given to specify the base for displayed offsets.  If not
800            provided, the EXIF/TIFF base offset is used.  Use -htmlDump0 for
801            absolute offsets.  Currently only EXIF/TIFF and JPEG information
802            is dumped, but the -u option can be used to give a raw hex dump of
803            other file formats.
804
805       -j[[+]=JSONFILE] (-json)
806            Use JSON (JavaScript Object Notation) formatting for console
807            output, or import JSON file if JSONFILE is specified.  This option
808            may be combined with -g to organize the output into objects by
809            group, or -G to add group names to each tag.  List-type tags with
810            multiple items are output as JSON arrays unless -sep is used.  By
811            default XMP structures are flattened into individual tags in the
812            JSON output, but the original structure may be preserved with the
813            -struct option (this also causes all list-type XMP tags to be
814            output as JSON arrays, otherwise single-item lists would be output
815            as simple strings).  The -a option is implied if the -g or -G
816            options are used, otherwise it is ignored and tags with identical
817            JSON names are suppressed. (-g4 may be used to ensure that all
818            tags have unique JSON names.)  Adding the -D or -H option changes
819            tag values to JSON objects with "val" and "id" fields, and adding
820            -l adds a "desc" field, and a "num" field if the numerical value
821            is different from the converted "val".  The -b option may be added
822            to output binary data, encoded in base64 if necessary (indicated
823            by ASCII "base64:" as the first 7 bytes of the value), and -t may
824            be added to include tag table information (see -t for details).
825            The JSON output is UTF-8 regardless of any -L or -charset option
826            setting, but the UTF-8 validation is disabled if a character set
827            other than UTF-8 is specified.
828
829            If JSONFILE is specified, the file is imported and the tag
830            definitions from the file are used to set tag values on a per-file
831            basis.  The special "SourceFile" entry in each JSON object
832            associates the information with a specific target file.  An object
833            with a missing SourceFile or a SourceFile of "*" defines default
834            tags for all target files which are combined with any tags
835            specified for the specific SourceFile processed.  The imported
836            JSON file must have the same format as the exported JSON files
837            with the exception that the -g option is not compatible with the
838            import file format (use -G instead).  Additionally, tag names in
839            the input JSON file may be suffixed with a "#" to disable print
840            conversion.
841
842            Unlike CSV import, empty values are not ignored, and will cause an
843            empty value to be written if supported by the specific metadata
844            type.  Tags are deleted by using the -f option and setting the tag
845            value to "-" (or to the MissingTagValue setting if this API option
846            was used).  Importing with -j+=JSONFILE causes new values to be
847            added to existing lists.
848
849       -l (-long)
850            Use long 2-line Canon-style output format.  Adds a description and
851            unconverted value (if it is different from the converted value) to
852            the XML, JSON or PHP output when -X, -j or -php is used.  May also
853            be combined with -listf, -listr or -listwf to add descriptions of
854            the file types.
855
856       -L (-latin)
857            Use Windows Latin1 encoding (cp1252) for output tag values instead
858            of the default UTF-8.  When writing, -L specifies that input text
859            values are Latin1 instead of UTF-8.  Equivalent to "-charset
860            latin".
861
862       -lang [LANG]
863            Set current language for tag descriptions and converted values.
864            LANG is "de", "fr", "ja", etc.  Use -lang with no other arguments
865            to get a list of available languages.  The default language is
866            "en" if -lang is not specified.  Note that tag/group names are
867            always English, independent of the -lang setting, and translation
868            of warning/error messages has not yet been implemented.  May also
869            be combined with -listx to output descriptions in one language
870            only.
871
872            By default, ExifTool uses UTF-8 encoding for special characters,
873            but the the -L or -charset option may be used to invoke other
874            encodings.  Note that ExifTool uses Unicode::LineBreak if
875            available to help preserve the column alignment of the plain text
876            output for languages with a variable-width character set.
877
878            Currently, the language support is not complete, but users are
879            welcome to help improve this by submitting their own translations.
880            To submit a translation, follow these steps (you must have Perl
881            installed for this):
882
883            1. Download and unpack the latest Image-ExifTool full
884            distribution.
885
886            2. 'cd' into the Image-ExifTool directory.
887
888            3. Run this command to make an XML file of the desired tags (eg.
889            EXIF):
890
891               ./exiftool -listx -exif:all > out.xml
892
893            4. Copy this text into a file called 'import.pl' in the exiftool
894            directory:
895
896                push @INC, 'lib';
897                require Image::ExifTool::TagInfoXML;
898                my $file = shift or die "Expected XML file name\n";
899                $Image::ExifTool::TagInfoXML::makeMissing = shift;
900                Image::ExifTool::TagInfoXML::BuildLangModules($file,8);
901
902            5. Run the 'import.pl' script to Import the XML file, generating
903            the 'MISSING' entries for your language (eg. Russian):
904
905               perl import.pl out.xml ru
906
907            6. Edit the generated language module
908            lib/Image/ExifTool/Lang/ru.pm, and search and replace all
909            'MISSING' strings in the file with your translations.
910
911            7. Email the module ('ru.pm' in this example) to philharvey66 at
912            gmail.com
913
914            8. Thank you!!
915
916       -listItem INDEX
917            For list-type tags, this causes only the item with the specified
918            index to be extracted.  INDEX is 0 for the first item in the list.
919            Negative indices may also be used to reference items from the end
920            of the list.  Has no effect on single-valued tags.  Also applies
921            to tag values when copying from a tag, and in -if conditions.
922
923       -n (--printConv)
924            Disable print conversion for all tags.  By default, extracted
925            values are converted to a more human-readable format, but the -n
926            option disables this conversion, revealing the machine-readable
927            values.  For example:
928
929                > exiftool -Orientation -S a.jpg
930                Orientation: Rotate 90 CW
931                > exiftool -Orientation -S -n a.jpg
932                Orientation: 6
933
934            The print conversion may also be disabled on a per-tag basis by
935            suffixing the tag name with a "#" character:
936
937                > exiftool -Orientation# -Orientation -S a.jpg
938                Orientation: 6
939                Orientation: Rotate 90 CW
940
941            These techniques may also be used to disable the inverse print
942            conversion when writing.  For example, the following commands all
943            have the same effect:
944
945                > exiftool -Orientation='Rotate 90 CW' a.jpg
946                > exiftool -Orientation=6 -n a.jpg
947                > exiftool -Orientation#=6 a.jpg
948
949       -p FMTFILE or STR (-printFormat)
950            Print output in the format specified by the given file or string.
951            The argument is interpreted as a string unless a file of that name
952            exists, in which case the string is loaded from the contents of
953            the file.  Tag names in the format file or string begin with a "$"
954            symbol and may contain leading group names and/or a trailing "#"
955            (to disable print conversion).  Case is not significant.  Braces
956            "{}" may be used around the tag name to separate it from
957            subsequent text.  Use $$ to represent a "$" symbol, and $/ for a
958            newline.
959
960            Multiple -p options may be used, each contributing a line (or
961            more) of text to the output.  Lines beginning with "#[HEAD]" and
962            "#[TAIL]" are output before the first processed file and after the
963            last processed file respectively.  Lines beginning with "#[SECT]"
964            and "#[ENDS]" are output before and after each section of files.
965            A section is defined as a group of consecutive files with the same
966            section header (eg. files are grouped by directory if "#[SECT]"
967            contains $directory).  Lines beginning with "#[BODY]" and lines
968            not beginning with "#" are output for each processed file.  Lines
969            beginning with "#[IF]" are not output, but all BODY lines are
970            skipped if any tag on an IF line doesn't exist.  Other lines
971            beginning with "#" are ignored.  For example, this format file:
972
973                # this is a comment line
974                #[HEAD]-- Generated by ExifTool $exifToolVersion --
975                File: $FileName - $DateTimeOriginal
976                (f/$Aperture, ${ShutterSpeed}s, ISO $EXIF:ISO)
977                #[TAIL]-- end --
978
979            with this command:
980
981                exiftool -p test.fmt a.jpg b.jpg
982
983            produces output like this:
984
985                -- Generated by ExifTool 12.00 --
986                File: a.jpg - 2003:10:31 15:44:19
987                (f/5.6, 1/60s, ISO 100)
988                File: b.jpg - 2006:05:23 11:57:38
989                (f/8.0, 1/13s, ISO 100)
990                -- end --
991
992            The values of List-type tags with multiple items and Shortcut tags
993            representing multiple tags are joined according the the -sep
994            option setting when interpolated in the string.
995
996            When -ee (-extractEmbedded) is combined with -p, embedded
997            documents are effectively processed as separate input files.
998
999            If a specified tag does not exist, a minor warning is issued and
1000            the line with the missing tag is not printed.  However, the -f
1001            option may be used to set the value of missing tags to '-' (but
1002            this may be configured via the MissingTagValue API option), or the
1003            -m option may be used to ignore minor warnings and leave the
1004            missing values empty.  Alternatively, -q -q may be used to simply
1005            suppress the warning messages.
1006
1007            The "Advanced formatting feature" may be used to modify the values
1008            of individual tags with the -p option.
1009
1010       -php Format output as a PHP Array.  The -g, -G, -D, -H, -l, -sep and
1011            -struct options combine with -php, and duplicate tags are handled
1012            in the same way as with the -json option.  As well, the -b option
1013            may be added to output binary data, and -t may be added to include
1014            tag table information (see -t for details).  Here is a simple
1015            example showing how this could be used in a PHP script:
1016
1017                <?php
1018                eval('$array=' . `exiftool -php -q image.jpg`);
1019                print_r($array);
1020                ?>
1021
1022       -s[NUM] (-short)
1023            Short output format.  Prints tag names instead of descriptions.
1024            Add NUM or up to 3 -s options for even shorter formats:
1025
1026                -s1 or -s        - print tag names instead of descriptions
1027                -s2 or -s -s     - no extra spaces to column-align values
1028                -s3 or -s -s -s  - print values only (no tag names)
1029
1030            Also effective when combined with -t, -h, -X or -listx options.
1031
1032       -S (-veryShort)
1033            Very short format.  The same as -s2 or two -s options.  Tag names
1034            are printed instead of descriptions, and no extra spaces are added
1035            to column-align values.
1036
1037       -sep STR (-separator)
1038            Specify separator string for items in list-type tags.  When
1039            reading, the default is to join list items with ", ".  When
1040            writing, this option causes values assigned to list-type tags to
1041            be split into individual items at each substring matching STR
1042            (otherwise they are not split by default).  Space characters in
1043            STR match zero or more whitespace characters in the value.
1044
1045            Note that an empty separator ("") is allowed, and will join items
1046            with no separator when reading, or split the value into individual
1047            characters when writing.
1048
1049            For pure binary output (-b used without -j, -php or -X), the first
1050            -sep option specifies a list-item separator, and a second -sep
1051            option specifies a terminator for the end of the list (or after
1052            each value if not a list).  In these strings, "\n", "\r" and "\t"
1053            may be used to represent a newline, carriage return and tab
1054            respectively.  By default, binary list items are separated by a
1055            newline, and no terminator is added.
1056
1057       -sort, --sort
1058            Sort output by tag description, or by tag name if the -s option is
1059            used.  When sorting by description, the sort order will depend on
1060            the -lang option setting.  Without the -sort option, tags appear
1061            in the order they were specified on the command line, or if not
1062            specified, the order they were extracted from the file.  By
1063            default, tags are organized by groups when combined with the -g or
1064            -G option, but this grouping may be disabled with --sort.
1065
1066       -struct, --struct
1067            Output structured XMP information instead of flattening to
1068            individual tags.  This option works well when combined with the
1069            XML (-X) and JSON (-j) output formats.  For other output formats,
1070            XMP structures and lists are serialized into the same format as
1071            when writing structured information (see
1072            <https://exiftool.org/struct.html> for details).  When copying,
1073            structured tags are copied by default unless --struct is used to
1074            disable this feature (although flattened tags may still be copied
1075            by specifying them individually unless -struct is used).  These
1076            options have no effect when assigning new values since both
1077            flattened and structured tags may always be used when writing.
1078
1079       -t (-tab)
1080            Output a tab-delimited list of description/values (useful for
1081            database import).  May be combined with -s to print tag names
1082            instead of descriptions, or -S to print tag values only, tab-
1083            delimited on a single line.  The -t option may be combined with
1084            -j, -php or -X to add tag table information ("table", tag "id",
1085            and "index" for cases where multiple conditional tags exist with
1086            the same ID).
1087
1088       -T (-table)
1089            Output tag values in table form.  Equivalent to -t -S -q -f.
1090
1091       -v[NUM] (-verbose)
1092            Print verbose messages.  NUM specifies the level of verbosity in
1093            the range 0-5, with higher numbers being more verbose.  If NUM is
1094            not given, then each -v option increases the level of verbosity by
1095            1.  With any level greater than 0, most other options are ignored
1096            and normal console output is suppressed unless specific tags are
1097            extracted.  Using -v0 causes the console output buffer to be
1098            flushed after each line (which may be useful to avoid delays when
1099            piping exiftool output), and prints the name of each processed
1100            file when writing.  Also see the -progress option.
1101
1102       -w[+|!] EXT or FMT (-textOut)
1103            Write console output to files with names ending in EXT, one for
1104            each source file.  The output file name is obtained by replacing
1105            the source file extension (including the '.') with the specified
1106            extension (and a '.' is added to the start of EXT if it doesn't
1107            already contain one).  Alternatively, a FMT string may be used to
1108            give more control over the output file name and directory.  In the
1109            format string, %d, %f and %e represent the directory, filename and
1110            extension of the source file, and %c represents a copy number
1111            which is automatically incremented if the file already exists.  %d
1112            includes the trailing '/' if necessary, but %e does not include
1113            the leading '.'.  For example:
1114
1115                -w %d%f.txt       # same effect as "-w txt"
1116                -w dir/%f_%e.out  # write files to "dir" as "FILE_EXT.out"
1117                -w dir2/%d%f.txt  # write to "dir2", keeping dir structure
1118                -w a%c.txt        # write to "a.txt" or "a1.txt" or "a2.txt"...
1119
1120            Existing files will not be changed unless an exclamation point is
1121            added to the option name (ie. -w! or -textOut!) to overwrite the
1122            file, or a plus sign (ie. -w+ or -textOut+) to append to the
1123            existing file.  Both may be used (ie. -w+! or -textOut+!) to
1124            overwrite output files that didn't exist before the command was
1125            run, and append the output from multiple source files.  For
1126            example, to write one output file for all source files in each
1127            directory:
1128
1129                exiftool -filename -createdate -T -w+! %d/out.txt -r DIR
1130
1131            Capitalized format codes %D, %F, %E and %C provide slightly
1132            different alternatives to the lower case versions.  %D does not
1133            include the trailing '/', %F is the full filename including
1134            extension, %E includes the leading '.', and %C increments the
1135            count for each processed file (see below).
1136
1137            Notes:
1138
1139            1) In a Windows BAT file the "%" character is represented by "%%",
1140            so an argument like "%d%f.txt" is written as "%%d%%f.txt".
1141
1142            2) If the argument for -w does not contain a valid format code
1143            (eg. %f), then it is interpreted as a file extension.  It is not
1144            possible to specify a simple filename as an argument -- creating a
1145            single output file from multiple source files is typically done by
1146            shell redirection, ie)
1147
1148                exiftool FILE1 FILE2 ... > out.txt
1149
1150            But if necessary, an empty format code may be used to force the
1151            argument to be interpreted as a format string, and the same result
1152            may be obtained without the use of shell redirection:
1153
1154                exiftool -w+! %0fout.txt FILE1 FILE2 ...
1155
1156            Advanced features:
1157
1158            A substring of the original file name, directory or extension may
1159            be taken by specifying a field width immediately following the '%'
1160            character.  If the width is negative, the substring is taken from
1161            the end.  The substring position (characters to ignore at the
1162            start or end of the string) may be given by a second optional
1163            value after a decimal point.  For example:
1164
1165                Input File Name     Format Specifier    Output File Name
1166                ----------------    ----------------    ----------------
1167                Picture-123.jpg     %7f.txt             Picture.txt
1168                Picture-123.jpg     %-.4f.out           Picture.out
1169                Picture-123.jpg     %7f.%-3f            Picture.123
1170                Picture-123a.jpg    Meta%-3.1f.txt      Meta123.txt
1171
1172            (Note that special characters may have a width of greater than
1173            one.)
1174
1175            For %d and %D, the field width/position specifiers may be applied
1176            to the directory levels instead of substring position by using a
1177            colon instead of a decimal point in the format specifier.  For
1178            example:
1179
1180                Source Dir     Format   Result       Notes
1181                ------------   ------   ----------   ------------------
1182                pics/2012/02   %2:d     pics/2012/   take top 2 levels
1183                pics/2012/02   %-:1d    pics/2012/   up one directory level
1184                pics/2012/02   %:1d     2012/02/     ignore top level
1185                pics/2012/02   %1:1d    2012/        take 1 level after top
1186                pics/2012/02   %-1:D    02           bottom level folder name
1187                /Users/phil    %:2d     phil/        ignore top 2 levels
1188
1189            (Note that the root directory counts as one level when an absolute
1190            path is used as in the last example above.)
1191
1192            For %c, these modifiers have a different effects.  If a field
1193            width is given, the copy number is padded with zeros to the
1194            specified width.  A leading '-' adds a dash before the copy
1195            number, and a '+' adds an underline.  By default, the copy number
1196            is omitted from the first file of a given name, but this can be
1197            changed by adding a decimal point to the modifier.  For example:
1198
1199                -w A%-cZ.txt      # AZ.txt, A-1Z.txt, A-2Z.txt ...
1200                -w B%5c.txt       # B.txt, B00001.txt, B00002.txt ...
1201                -w C%.c.txt       # C0.txt, C1.txt, C2.txt ...
1202                -w D%-.c.txt      # D-0.txt, D-1.txt, D-2.txt ...
1203                -w E%-.4c.txt     # E-0000.txt, E-0001.txt, E-0002.txt ...
1204                -w F%-.4nc.txt    # F-0001.txt, F-0002.txt, F-0003.txt ...
1205                -w G%+c.txt       # G.txt, G_1.txt G_2.txt ...
1206                -w H%-lc.txt      # H.txt, H-b.txt, H-c.txt ...
1207                -w I.%.3uc.txt    # I.AAA.txt, I.AAB.txt, I.AAC.txt ...
1208
1209            A special feature allows the copy number to be incremented for
1210            each processed file by using %C (upper case) instead of %c.  This
1211            allows a sequential number to be added to output file names, even
1212            if the names are different.  For %C, a copy number of zero is not
1213            omitted as it is with %c.  A leading '-' causes the number to be
1214            reset at the start of each new directory, and '+' has no effect.
1215            The number before the decimal place gives the starting index, the
1216            number after the decimal place gives the field width.  The
1217            following examples show the output filenames when used with the
1218            command "exiftool rose.jpg star.jpg jet.jpg ...":
1219
1220                -w %C%f.txt       # 0rose.txt, 1star.txt, 2jet.txt
1221                -w %f-%10C.txt    # rose-10.txt, star-11.txt, jet-12.txt
1222                -w %.3C-%f.txt    # 000-rose.txt, 001-star.txt, 002-jet.txt
1223                -w %57.4C%f.txt   # 0057rose.txt, 0058star.txt, 0059jet.txt
1224
1225            All format codes may be modified by 'l' or 'u' to specify lower or
1226            upper case respectively (ie. %le for a lower case file extension).
1227            When used to modify %c or %C, the numbers are changed to an
1228            alphabetical base (see example H above).  Also, %c and %C may be
1229            modified by 'n' to count using natural numbers starting from 1,
1230            instead of 0 (see example F above).
1231
1232            This same FMT syntax is used with the -o and -tagsFromFile
1233            options, although %c and %C are only valid for output file names.
1234
1235       -W[+|!] FMT (-tagOut)
1236            This enhanced version of the -w option allows a separate output
1237            file to be created for each extracted tag.  See the -w option
1238            documentation above for details of the basic functionality.
1239            Listed here are the differences between -W and -w:
1240
1241            1) With -W, a new output file is created for each extracted tag.
1242
1243            2) -W supports three additional format codes:  %t, %g and %s
1244            represent the tag name, group name, and suggested extension for
1245            the output file (based on the format of the data).  The %g code
1246            may be followed by a single digit to specify the group family
1247            number (eg. %g1), otherwise family 0 is assumed.  The substring
1248            width/position/case specifiers may be used with these format codes
1249            in exactly the same way as with %f and %e.
1250
1251            3) The argument for -W is interpreted as a file name if it
1252            contains no format codes.  (For -w, this would be a file
1253            extension.)  This change allows a simple file name to be
1254            specified, which, when combined with the append feature, provides
1255            a method to write metadata from multiple source files to a single
1256            output file without the need for shell redirection.  For example,
1257            the following pairs of commands give the same result:
1258
1259                # overwriting existing text file
1260                exiftool test.jpg > out.txt     # shell redirection
1261                exiftool test.jpg -W+! out.txt  # equivalent -W option
1262
1263                # append to existing text file
1264                exiftool test.jpg >> out.txt    # shell redirection
1265                exiftool test.jpg -W+ out.txt   # equivalent -W option
1266
1267            4) Adding the -v option to -W sends a list of the tags and output
1268            file names to the console instead of giving a verbose dump of the
1269            entire file.  (Unless appending all output to one file for each
1270            source file by using -W+ with an output file FMT that does not
1271            contain %t, $g or %s.)
1272
1273            5) Individual list items are stored in separate files when -W is
1274            combined with -b, but note that for separate files to be created
1275            %c or %C must be used in FMT to give the files unique names.
1276
1277       -Wext EXT, --Wext EXT (-tagOutExt)
1278            This option is used to specify the type of output file(s) written
1279            by the -W option.  An output file is written only if the suggested
1280            extension matches EXT.  Multiple -Wext options may be used to
1281            write more than one type of file.  Use --Wext to write all but the
1282            specified type(s).
1283
1284       -X (-xmlFormat)
1285            Use ExifTool-specific RDF/XML formatting for console output.
1286            Implies the -a option, so duplicate tags are extracted.  The
1287            formatting options -b, -D, -H, -l, -s, -sep, -struct and -t may be
1288            used in combination with -X to affect the output, but note that
1289            the tag ID (-D, -H and -t), binary data (-b) and structured output
1290            (-struct) options are not effective for the short output (-s).
1291            Another restriction of -s is that only one tag with a given group
1292            and name may appear in the output.  Note that the tag ID options
1293            (-D, -H and -t) will produce non-standard RDF/XML unless the -l
1294            option is also used.
1295
1296            By default, -X outputs flattened tags, so -struct should be added
1297            if required to preserve XMP structures.  List-type tags with
1298            multiple values are formatted as an RDF Bag, but they are combined
1299            into a single string when -s or -sep is used.  Using -L changes
1300            the XML encoding from "UTF-8" to "windows-1252".  Other -charset
1301            settings change the encoding only if there is a corresponding
1302            standard XML character set.  The -b option causes binary data
1303            values to be written, encoded in base64 if necessary.  The -t
1304            option adds tag table information to the output (see -t for
1305            details).
1306
1307            Note:  This output is NOT the same as XMP because it uses
1308            dynamically-generated property names corresponding to the ExifTool
1309            tag names, and not the standard XMP properties.  To write XMP
1310            instead, use the -o option with an XMP extension for the output
1311            file.
1312
1313       Processing control
1314
1315       -a, --a (-duplicates, --duplicates)
1316            Allow (-a) or suppress (--a) duplicate tag names to be extracted.
1317            By default, duplicate tags are suppressed when reading unless the
1318            -ee or -X options are used or the Duplicates option is enabled in
1319            the configuration file. This option has an affect when writing
1320            only to allow duplicate Warning messages to be shown.  Duplicate
1321            tags are always extracted when copying.
1322
1323       -e (--composite)
1324            Extract existing tags only -- don't generate composite tags.
1325
1326       -ee (-extractEmbedded)
1327            Extract information from embedded documents in EPS files, embedded
1328            EPS information and JPEG and Jpeg2000 images in PDF files,
1329            embedded MPF images in JPEG and MPO files, streaming metadata in
1330            AVCHD videos, and the resource fork of Mac OS files.  Implies the
1331            -a option.  Use -g3 or -G3 to identify the originating document
1332            for extracted information.  Embedded documents containing sub-
1333            documents are indicated with dashes in the family 3 group name.
1334            (eg. "Doc2-3" is the 3rd sub-document of the 2nd embedded
1335            document.) Note that this option may increase processing time
1336            substantially, especially for PDF files with many embedded images
1337            or videos with streaming metadata.
1338
1339            When used with -ee, the -p option is evaluated for each embedded
1340            document as if it were a separate input file.  This allows, for
1341            example, generation of GPS track logs from timed metadata in
1342            videos.  See <https://exiftool.org/geotag.html#Inverse> for
1343            examples.
1344
1345       -ext[+] EXT, --ext EXT (-extension)
1346            Process only files with (-ext) or without (--ext) a specified
1347            extension.  There may be multiple -ext and --ext options.  A plus
1348            sign may be added (ie. -ext+) to add the specified extension to
1349            the normally processed files.  EXT may begin with a leading '.',
1350            which is ignored.  Case is not significant.  "*" may be used to
1351            process files with any extension (or none at all), as in the last
1352            three examples:
1353
1354                exiftool -ext JPG DIR             # process only JPG files
1355                exiftool --ext cr2 --ext dng DIR  # supported files but CR2/DNG
1356                exiftool -ext+ txt DIR            # supported files plus TXT
1357                exiftool -ext "*" DIR             # process all files
1358                exiftool -ext "*" --ext xml DIR   # process all but XML files
1359                exiftool -ext "*" --ext . DIR     # all but those with no ext
1360
1361            Using this option has two main advantages over specifying "*.EXT"
1362            on the command line:  1) It applies to files in subdirectories
1363            when combined with the -r option.  2) The -ext option is case-
1364            insensitive, which is useful when processing files on case-
1365            sensitive filesystems.
1366
1367            Note that all files specified on the command line will be
1368            processed regardless of extension unless the -ext option is used.
1369
1370       -F[OFFSET] (-fixBase)
1371            Fix the base for maker notes offsets.  A common problem with some
1372            image editors is that offsets in the maker notes are not adjusted
1373            properly when the file is modified.  This may cause the wrong
1374            values to be extracted for some maker note entries when reading
1375            the edited file.  This option allows an integer OFFSET to be
1376            specified for adjusting the maker notes base offset.  If no OFFSET
1377            is given, ExifTool takes its best guess at the correct base.  Note
1378            that exiftool will automatically fix the offsets for images which
1379            store original offset information (eg. newer Canon models).
1380            Offsets are fixed permanently if -F is used when writing EXIF to
1381            an image. eg)
1382
1383                exiftool -F -exif:resolutionunit=inches image.jpg
1384
1385       -fast[NUM]
1386            Increase speed of extracting information.  With -fast (or -fast1),
1387            ExifTool will not scan to the end of a JPEG image to check for an
1388            AFCP or PreviewImage trailer, or past the first comment in GIF
1389            images or the audio/video data in WAV/AVI files to search for
1390            additional metadata.  These speed benefits are small when reading
1391            images directly from disk, but can be substantial if piping images
1392            through a network connection.  For more substantial speed
1393            benefits, -fast2 also causes exiftool to avoid extracting any EXIF
1394            MakerNote information.  -fast3 avoids extracting metadata from the
1395            file, and returns only pseudo System tags, but still reads the
1396            file header to obtain an educated guess at FileType.  -fast4
1397            doesn't even read the file header, and returns only System tags
1398            and a FileType based on the file extension.  Has no effect when
1399            writing.
1400
1401            Note that a separate -fast setting may be used for evaluation of a
1402            -if condition, or when ordering files with the -fileOrder option.
1403            See the -if and -fileOrder options for details.
1404
1405       -fileOrder[NUM] [-]TAG
1406            Set file processing order according to the sorted value of the
1407            specified TAG.  For example, to process files in order of date:
1408
1409                exiftool -fileOrder DateTimeOriginal DIR
1410
1411            Additional -fileOrder options may be added for secondary sort
1412            keys.  Numbers are sorted numerically, and all other values are
1413            sorted alphabetically.  Files missing the specified tag are sorted
1414            last.  The sort order may be reversed by prefixing the tag name
1415            with a "-" (eg.  "-fileOrder -createdate").  Print conversion of
1416            the sorted values is disabled with the -n option, or a "#"
1417            appended to the tag name.  Other formatting options (eg. -d) have
1418            no effect on the sorted values.  Note that the -fileOrder option
1419            can have a large performance impact since it involves an
1420            additional processing pass of each file, but this impact may be
1421            reduced by specifying a NUM for the -fast level used during the
1422            metadata-extraction phase.  For example, -fileOrder4 may be used
1423            if TAG is a pseudo System tag.  If multiple -fileOrder options are
1424            used, the extraction is done at the lowest -fast level.
1425
1426       -i DIR (-ignore)
1427            Ignore specified directory name.  DIR may be either an individual
1428            folder name, or a full path.  If a full path is specified, it must
1429            match the Directory tag exactly to be ignored.  Use multiple -i
1430            options to ignore more than one directory name.  A special DIR
1431            value of "SYMLINKS" (case sensitive) may be specified to ignore
1432            symbolic links when the -r option is used.
1433
1434       -if[NUM] EXPR
1435            Specify a condition to be evaluated before processing each FILE.
1436            EXPR is a Perl-like logic expression containing tag names prefixed
1437            by "$" symbols.  It is evaluated with the tags from each FILE in
1438            turn, and the file is processed only if the expression returns
1439            true.  Unlike Perl variable names, tag names are not case
1440            sensitive and may contain a hyphen.  As well, tag names may have a
1441            leading group names separated by colons, and/or a trailing "#"
1442            character to disable print conversion.  The expression $GROUP:all
1443            evaluates to 1 if any tag exists in the specified "GROUP", or 0
1444            otherwise (see note 2 below).  When multiple -if options are used,
1445            all conditions must be satisfied to process the file.  Returns an
1446            exit status of 2 if all files fail the condition.  Below are a few
1447            examples:
1448
1449                # extract shutterspeed from all Canon images in a directory
1450                exiftool -shutterspeed -if '$make eq "Canon"' dir
1451
1452                # add one hour to all images created on or after Apr. 2, 2006
1453                exiftool -alldates+=1 -if '$CreateDate ge "2006:04:02"' dir
1454
1455                # set EXIF ISO value if possible, unless it is set already
1456                exiftool '-exif:iso<iso' -if 'not $exif:iso' dir
1457
1458                # find images containing a specific keyword (case insensitive)
1459                exiftool -if '$keywords =~ /harvey/i' -filename dir
1460
1461            Adding NUM to the -if option causes a separate processing pass to
1462            be executed for evaluating EXPR at a -fast level given by NUM (see
1463            the -fast option documentation for details).  Without NUM, only
1464            one processing pass is done at the level specified by the -fast
1465            option.  For example, using -if4 is possible if EXPR uses only
1466            pseudo System tags, and may significantly speed processing if
1467            enough files fail the condition.
1468
1469            The expression has access to the current ExifTool object through
1470            $self, and the following special functions are available to allow
1471            short-circuiting of the file processing.  Both functions have a
1472            return value of 1.  Case is significant for function names.
1473
1474                End()    - end processing after this file
1475                EndDir() - end processing of files in this directory
1476
1477            Notes:
1478
1479            1) The -n and -b options also apply to tags used in EXPR.
1480
1481            2) Some binary data blocks are not extracted unless specified
1482            explicitly.  These tags are not available for use in the -if
1483            condition unless they are also specified on the command line.  The
1484            alternative is to use the $GROUP:all syntax. (eg. Use $exif:all
1485            instead of $exif in EXPR to test for the existence of EXIF tags.)
1486
1487            3) Tags in the string are interpolated the same way as with -p
1488            before the expression is evaluated.  In this interpolation, $/ is
1489            converted to a newline and $$ represents a single "$" symbol (so
1490            Perl variables, if used, require a double "$").
1491
1492            4) The condition may only test tags from the file being processed.
1493            To process one file based on tags from another, two steps are
1494            required.  For example, to process XMP sidecar files in directory
1495            "DIR" based on tags from the associated NEF:
1496
1497                exiftool -if EXPR -p '$directory/$filename' -ext nef DIR > nef.txt
1498                exiftool -@ nef.txt -srcfile %d%f.xmp ...
1499
1500            5) The -a option has no effect on the evaluation of the
1501            expression, and the values of duplicate tags are accessible only
1502            by specifying a group name (such as a family 4 instance number,
1503            eg. $Copy1:TAG, $Copy2:TAG, etc).
1504
1505            6) A special "OK" UserParam is available to test the success of
1506            the previous command when -execute was used, and may be used like
1507            any other tag in the condition (ie. "$OK").
1508
1509       -m (-ignoreMinorErrors)
1510            Ignore minor errors and warnings.  This enables writing to files
1511            with minor errors and disables some validation checks which could
1512            result in minor warnings.  Generally, minor errors/warnings
1513            indicate a problem which usually won't result in loss of metadata
1514            if ignored.  However, there are exceptions, so ExifTool leaves it
1515            up to you to make the final decision.  Minor errors and warnings
1516            are indicated by "[minor]" at the start of the message.  Warnings
1517            which affect processing when ignored are indicated by "[Minor]"
1518            (with a capital "M").  Note that this causes missing values in
1519            -tagsFromFile, -p and -if strings to be set to an empty string
1520            rather than an undefined value.
1521
1522       -o OUTFILE or FMT (-out)
1523            Set the output file or directory name when writing information.
1524            Without this option, when any "real" tags are written the original
1525            file is renamed to "FILE_original" and output is written to FILE.
1526            When writing only FileName and/or Directory "pseudo" tags, -o
1527            causes the file to be copied instead of moved, but directories
1528            specified for either of these tags take precedence over that
1529            specified by the -o option.
1530
1531            OUTFILE may be "-" to write to stdout.  The output file name may
1532            also be specified using a FMT string in which %d, %f and %e
1533            represent the directory, file name and extension of FILE.  Also,
1534            %c may be used to add a copy number. See the -w option for FMT
1535            string examples.
1536
1537            The output file is taken to be a directory name if it already
1538            exists as a directory or if the name ends with '/'.  Output
1539            directories are created if necessary.  Existing files will not be
1540            overwritten.  Combining the -overwrite_original option with -o
1541            causes the original source file to be erased after the output file
1542            is successfully written.
1543
1544            A special feature of this option allows the creation of certain
1545            types of files from scratch, or with the metadata from another
1546            type of file.  The following file types may be created using this
1547            technique:
1548
1549                XMP, EXIF, EXV, MIE, ICC/ICM, VRD, DR4
1550
1551            The output file type is determined by the extension of OUTFILE
1552            (specified as "-.EXT" when writing to stdout).  The output file is
1553            then created from a combination of information in FILE (as if the
1554            -tagsFromFile option was used), and tag values assigned on the
1555            command line.  If no FILE is specified, the output file may be
1556            created from scratch using only tags assigned on the command line.
1557
1558       -overwrite_original
1559            Overwrite the original FILE (instead of preserving it by adding
1560            "_original" to the file name) when writing information to an
1561            image.  Caution: This option should only be used if you already
1562            have separate backup copies of your image files.  The overwrite is
1563            implemented by renaming a temporary file to replace the original.
1564            This deletes the original file and replaces it with the edited
1565            version in a single operation.  When combined with -o, this option
1566            causes the original file to be deleted if the output file was
1567            successfully written (ie. the file is moved instead of copied).
1568
1569       -overwrite_original_in_place
1570            Similar to -overwrite_original except that an extra step is added
1571            to allow the original file attributes to be preserved.  For
1572            example, on a Mac this causes the original file creation date,
1573            type, creator, label color, icon, Finder tags, other extended
1574            attributes and hard links to the file to be preserved (but note
1575            that the Mac OS resource fork is always preserved unless
1576            specifically deleted with "-rsrc:all=").  This is implemented by
1577            opening the original file in update mode and replacing its data
1578            with a copy of a temporary file before deleting the temporary.
1579            The extra step results in slower performance, so the
1580            -overwrite_original option should be used instead unless
1581            necessary.
1582
1583            Note that this option reverts to the behaviour of the
1584            -overwrite_original option when also writing the FileName and/or
1585            Directory tags.
1586
1587       -P (-preserve)
1588            Preserve the filesystem modification date/time ("FileModifyDate")
1589            of the original file when writing.  Note that some filesystems
1590            store a creation date (ie. "FileCreateDate" on Windows and Mac
1591            systems) which is not affected by this option.  This creation date
1592            is preserved on Windows systems where Win32API::File and
1593            Win32::API are available regardless of this setting.  For other
1594            systems, the -overwrite_original_in_place option may be used if
1595            necessary to preserve the creation date.  The -P option is
1596            superseded by any value written to the FileModifyDate tag.
1597
1598       -password PASSWD
1599            Specify password to allow processing of password-protected PDF
1600            documents.  If a password is required but not given, a warning is
1601            issued and the document is not processed.  This option is ignored
1602            if a password is not required.
1603
1604       -progress[:[TITLE]]
1605            Show the progress when processing files.  Without a colon, the
1606            -progress option adds a progress count in brackets after the name
1607            of each processed file, giving the current file number and the
1608            total number of files to be processed.  Implies the -v0 option,
1609            causing the names of processed files to also be printed when
1610            writing.  When combined with the -if option, the total count
1611            includes all files before the condition is applied, but files that
1612            fail the condition will not have their names printed.
1613
1614            If followed by a colon (ie. -progress:), the console window title
1615            is set according to the specified TITLE string.  If no TITLE is
1616            given, a default TITLE string of "ExifTool %p%%" is assumed.  In
1617            the string, %f represents the file name, %p is the progress as a
1618            percent, %r is the progress as a ratio, %##b is a progress bar of
1619            width "##" (20 characters if "##" is omitted), and %% is a %
1620            character.  May be combined with the normal -progress option to
1621            also show the progress count in console messages.  (Note: For this
1622            feature to function correctly on Mac/Linux, stderr must go to the
1623            console.)
1624
1625       -q (-quiet)
1626            Quiet processing.  One -q suppresses normal informational
1627            messages, and a second -q suppresses warnings as well.  Error
1628            messages can not be suppressed, although minor errors may be
1629            downgraded to warnings with the -m option, which may then be
1630            suppressed with "-q -q".
1631
1632       -r[.] (-recurse)
1633            Recursively process files in subdirectories.  Only meaningful if
1634            FILE is a directory name.  Subdirectories with names beginning
1635            with "." are not processed unless "." is added to the option name
1636            (ie. -r. or -recurse.).  By default, exiftool will also follow
1637            symbolic links to directories if supported by the system, but this
1638            may be disabled with "-i SYMLINKS" (see the -i option for
1639            details).  Combine this with -ext options to control the types of
1640            files processed.
1641
1642       -scanForXMP
1643            Scan all files (even unsupported formats) for XMP information
1644            unless found already.  When combined with the -fast option, only
1645            unsupported file types are scanned.  Warning: It can be time
1646            consuming to scan large files.
1647
1648       -u (-unknown)
1649            Extract values of unknown tags.  Add another -u to also extract
1650            unknown information from binary data blocks.  This option applies
1651            to tags with numerical tag ID's, and causes tag names like
1652            "Exif_0xc5d9" to be generated for unknown information.  It has no
1653            effect on information types which have human-readable tag ID's
1654            (such as XMP), since unknown tags are extracted automatically from
1655            these formats.
1656
1657       -U (-unknown2)
1658            Extract values of unknown tags as well as unknown information from
1659            some binary data blocks.  This is the same as two -u options.
1660
1661       -wm MODE (-writeMode)
1662            Set mode for writing/creating tags.  MODE is a string of one or
1663            more characters from the list below.  The default write mode is
1664            "wcg".
1665
1666                w - Write existing tags
1667                c - Create new tags
1668                g - create new Groups as necessary
1669
1670            For example, use "-wm cg" to only create new tags (and avoid
1671            editing existing ones).
1672
1673            The level of the group is the SubDirectory level in the metadata
1674            structure.  For XMP or IPTC this is the full XMP/IPTC block (the
1675            family 0 group), but for EXIF this is the individual IFD (the
1676            family 1 group).
1677
1678       -z (-zip)
1679            When reading, causes information to be extracted from .gz and .bz2
1680            compressed images (only one image per archive; requires gzip and
1681            bzip2 to be available).  When writing, causes compressed
1682            information to be written if supported by the metadata format (eg.
1683            compressed textual metadata in PNG), disables the recommended
1684            padding in embedded XMP (saving 2424 bytes when writing XMP in a
1685            file), and writes XMP in shorthand format -- the equivalent of
1686            setting the API Compress=1 and Compact="NoPadding,Shorthand".
1687
1688       Other options
1689
1690       -@ ARGFILE
1691            Read command-line arguments from the specified file.  The file
1692            contains one argument per line (NOT one option per line -- some
1693            options require additional arguments, and all arguments must be
1694            placed on separate lines).  Blank lines and lines beginning with
1695            "#" are ignored (unless they start with "#[CSTR]", in which case
1696            the rest of the line is treated as a C string, allowing standard C
1697            escape sequences such as "\n" for a newline).  White space at the
1698            start of a line is removed.  Normal shell processing of arguments
1699            is not performed, which among other things means that arguments
1700            should not be quoted and spaces are treated as any other
1701            character.  ARGFILE may exist relative to either the current
1702            directory or the exiftool directory unless an absolute pathname is
1703            given.
1704
1705            For example, the following ARGFILE will set the value of Copyright
1706            to "Copyright YYYY, Phil Harvey", where "YYYY" is the year of
1707            CreateDate:
1708
1709                -d
1710                %Y
1711                -copyright<Copyright $createdate, Phil Harvey
1712
1713            Arguments in ARGFILE behave exactly the same as if they were
1714            entered at the location of the -@ option on the command line, with
1715            the exception that the -config and -common_args options may not be
1716            used in an ARGFILE.
1717
1718       -k (-pause)
1719            Pause with the message "-- press any key --" or "-- press RETURN
1720            --" (depending on your system) before terminating.  This option is
1721            used to prevent the command window from closing when run as a
1722            Windows drag and drop application.
1723
1724       -list, -listw, -listf, -listr, -listwf, -listg[NUM], -listd, -listx
1725            Print a list of all valid tag names (-list), all writable tag
1726            names (-listw), all supported file extensions (-listf), all
1727            recognized file extensions (-listr), all writable file extensions
1728            (-listwf), all tag groups [in a specified family] (-listg[NUM]),
1729            all deletable tag groups (-listd), or an XML database of tag
1730            details including language translations (-listx).  The -list,
1731            -listw and -listx options may be followed by an additional
1732            argument of the form "-GROUP:All" to list only tags in a specific
1733            group, where "GROUP" is one or more family 0-2 group names
1734            (excepting EXIF IFD groups) separated by colons.  With -listg, NUM
1735            may be given to specify the group family, otherwise family 0 is
1736            assumed.  The -l option may be combined with -listf, -listr or
1737            -listwf to add file descriptions to the list.  The -lang option
1738            may be combined with -listx to output descriptions in a single
1739            language.  Here are some examples:
1740
1741                -list               # list all tag names
1742                -list -EXIF:All     # list all EXIF tags
1743                -list -xmp:time:all # list all XMP tags relating to time
1744                -listw -XMP-dc:All  # list all writable XMP-dc tags
1745                -listf              # list all supported file extensions
1746                -listr              # list all recognized file extensions
1747                -listwf             # list all writable file extensions
1748                -listg1             # list all groups in family 1
1749                -listd              # list all deletable groups
1750                -listx -EXIF:All    # list database of EXIF tags in XML format
1751                -listx -XMP:All -s  # list short XML database of XMP tags
1752
1753            When combined with -listx, the -s option shortens the output by
1754            omitting the descriptions and values (as in the last example
1755            above), and -f adds a 'flags' attribute if applicable.  The flags
1756            are formatted as a comma-separated list of the following possible
1757            values:  Avoid, Binary, List, Mandatory, Permanent, Protected,
1758            Unknown and Unsafe (see the Tag Name documentation).  For XMP List
1759            tags, the list type (Alt, Bag or Seq) is added to the flags, and
1760            flattened structure tags are indicated by a Flattened flag.
1761
1762            Note that none of the -list options require an input FILE.
1763
1764       -ver Print exiftool version number.  The -v option may be added to
1765            print addition system information (see the README file of the full
1766            distribution for more details about optional libraries), or -v2 to
1767            also list the Perl include directories.
1768
1769       --   Indicates the end of options.  Any remaining arguments are treated
1770            as file names, even if they begin with a dash ("-").
1771
1772       Special features
1773
1774       -geotag TRKFILE
1775            Geotag images from the specified GPS track log file.  Using the
1776            -geotag option is equivalent to writing a value to the "Geotag"
1777            tag.  The GPS position is interpolated from the track at a time
1778            specified by the value written to the "Geotime" tag.  If "Geotime"
1779            is not specified, the value is copied from "DateTimeOriginal#"
1780            (the "#" is added to copy the unformatted value, avoiding
1781            potential conflicts with the -d option).  For example, the
1782            following two commands are equivalent:
1783
1784                exiftool -geotag trk.log image.jpg
1785                exiftool -geotag trk.log "-Geotime<DateTimeOriginal#" image.jpg
1786
1787            When the "Geotime" value is converted to UTC, the local system
1788            timezone is assumed unless the date/time value contains a
1789            timezone.  Writing "Geotime" causes the following tags to be
1790            written (provided they can be calculated from the track log, and
1791            they are supported by the destination metadata format):
1792            GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef,
1793            GPSAltitude, GPSAltitudeRef, GPSDateStamp, GPSTimeStamp,
1794            GPSDateTime, GPSTrack, GPSTrackRef, GPSSpeed, GPSSpeedRef,
1795            GPSImgDirection, GPSImgDirectionRef, GPSPitch, GPSRoll,
1796            AmbientTemperature and CameraElevationAngle.  By default, tags are
1797            created in EXIF, and updated in XMP only if they already exist.
1798            However, "EXIF:Geotime" or "XMP:Geotime" may be specified to write
1799            only EXIF or XMP tags respectively.  Note that GPSPitch and
1800            GPSRoll are non-standard, and require user-defined tags in order
1801            to be written.
1802
1803            The "Geosync" tag may be used to specify a time correction which
1804            is applied to each "Geotime" value for synchronization with GPS
1805            time.  For example, the following command compensates for image
1806            times which are 1 minute and 20 seconds behind GPS:
1807
1808                exiftool -geosync=+1:20 -geotag a.log DIR
1809
1810            Advanced "Geosync" features allow a linear time drift correction
1811            and synchronization from previously geotagged images.  See
1812            "geotag.html" in the full ExifTool distribution for more
1813            information.
1814
1815            Multiple -geotag options may be used to concatenate GPS track log
1816            data.  Also, a single -geotag option may be used to load multiple
1817            track log files by using wildcards in the TRKFILE name, but note
1818            that in this case TRKFILE must be quoted on most systems (with the
1819            notable exception of Windows) to prevent filename expansion.  For
1820            example:
1821
1822                exiftool -geotag "TRACKDIR/*.log" IMAGEDIR
1823
1824            Currently supported track file formats are GPX, NMEA RMC/GGA/GLL,
1825            KML, IGC, Garmin XML and TCX, Magellan PMGNTRK, Honeywell PTNTHPR,
1826            Bramor gEO, Winplus Beacon TXT, and GPS/IMU CSV files.  See
1827            "GEOTAGGING EXAMPLES" for examples. Also see "geotag.html" in the
1828            full ExifTool distribution and the Image::ExifTool Options for
1829            more details and for information about geotag configuration
1830            options.
1831
1832       -globalTimeShift SHIFT
1833            Shift all formatted date/time values by the specified amount when
1834            reading.  Does not apply to unformatted (-n) output.  SHIFT takes
1835            the same form as the date/time shift when writing (see
1836            Image::ExifTool::Shift.pl for details), with a negative shift
1837            being indicated with a minus sign ("-") at the start of the SHIFT
1838            string.  For example:
1839
1840                # return all date/times, shifted back by 1 hour
1841                exiftool -globalTimeShift -1 -time:all a.jpg
1842
1843                # set the file name from the shifted CreateDate (-1 day) for
1844                # all images in a directory
1845                exiftool "-filename<createdate" -globaltimeshift "-0:0:1 0:0:0" \
1846                    -d %Y%m%d-%H%M%S.%%e dir
1847
1848       -use MODULE
1849            Add features from specified plug-in MODULE.  Currently, the MWG
1850            module is the only plug-in module distributed with exiftool.  This
1851            module adds read/write support for tags as recommended by the
1852            Metadata Working Group.  As a convenience, "-use MWG" is assumed
1853            if the "MWG" group is specified for any tag on the command line.
1854            See the MWG Tags documentation for more details.  Note that this
1855            option is not reversible, and remains in effect until the
1856            application terminates, even across the "-execute" option.
1857
1858       Utilities
1859
1860       -restore_original
1861       -delete_original[!]
1862            These utility options automate the maintenance of the "_original"
1863            files created by exiftool.  They have no effect on files without
1864            an "_original" copy.  The -restore_original option restores the
1865            specified files from their original copies by renaming the
1866            "_original" files to replace the edited versions.  For example,
1867            the following command restores the originals of all JPG images in
1868            directory "DIR":
1869
1870                exiftool -restore_original -ext jpg DIR
1871
1872            The -delete_original option deletes the "_original" copies of all
1873            files specified on the command line.  Without a trailing "!" this
1874            option prompts for confirmation before continuing.  For example,
1875            the following command deletes "a.jpg_original" if it exists, after
1876            asking "Are you sure?":
1877
1878                exiftool -delete_original a.jpg
1879
1880            These options may not be used with other options to read or write
1881            tag values in the same command, but may be combined with options
1882            such -ext, -if, -r, -q and -v.
1883
1884       Advanced options
1885
1886       Among other things, the advanced options allow complex processing to be
1887       performed from a single command without the need for additional
1888       scripting.  This may be particularly useful for implementations such as
1889       Windows drag-and-drop applications.  These options may also be used to
1890       improve performance in multi-pass processing by reducing the overhead
1891       required to load exiftool for each invocation.
1892
1893       -api OPT[[^]=[VAL]]
1894            Set ExifTool API option.  OPT is an API option name.  The option
1895            value is set to 1 if =VAL is omitted.  If VAL is omitted, the
1896            option value is set to undef if "=" is used, or an empty string
1897            with "^=".  See Image::ExifTool Options for a list of available
1898            API options.  This overrides API options set via the config file.
1899
1900       -common_args
1901            Specifies that all arguments following this option are common to
1902            all executed commands when -execute is used.  This and the -config
1903            option are the only options that may not be used inside a -@
1904            ARGFILE.  Note that by definition this option and its arguments
1905            MUST come after all other options on the command line.
1906
1907       -config CFGFILE
1908            Load specified configuration file instead of the default
1909            ".ExifTool_config".  If used, this option must come before all
1910            other arguments on the command line and applies to all -execute'd
1911            commands.  The CFGFILE must exist relative to the current working
1912            directory or the exiftool application directory unless an absolute
1913            path is specified.  Loading of the default config file may be
1914            disabled by setting CFGFILE to an empty string (ie.  "").  See
1915            <https://exiftool.org/config.html> and config_files/example.config
1916            in the full ExifTool distribution for details about the
1917            configuration file syntax.
1918
1919       -echo[NUM] TEXT
1920            Echo TEXT to stdout (-echo or -echo1) or stderr (-echo2).  Text is
1921            output as the command line is parsed, before the processing of any
1922            input files.  NUM may also be 3 or 4 to output text (to stdout or
1923            stderr respectively) after processing is complete.
1924
1925       -efile[NUM][!] ERRFILE
1926            Save the names of files giving errors (NUM missing or 1), files
1927            that were unchanged (NUM is 2), files that fail the -if condition
1928            (NUM is 4), or any combination thereof (by summing NUM, eg.
1929            -efile3 is the same has having both -efile and -efile2 options
1930            with the same ERRFILE).  By default, file names are appended to
1931            any existing ERRFILE, but ERRFILE is overwritten if an exclamation
1932            point is added to the option (eg. -efile!).  Saves the name of the
1933            file specified by the -srcfile option if applicable.
1934
1935       -execute[NUM]
1936            Execute command for all arguments up to this point on the command
1937            line (plus any arguments specified by -common_args).  The result
1938            is as if the commands were executed as separate command lines
1939            (with the exception of the -config and -use options which remain
1940            in effect for subsequent commands).  Allows multiple commands to
1941            be executed from a single command line.  NUM is an optional number
1942            that is echoed in the "{ready}" message when using the -stay_open
1943            feature.
1944
1945       -srcfile FMT
1946            Specify a different source file to be processed based on the name
1947            of the original FILE.  This may be useful in some special
1948            situations for processing related preview images or sidecar files.
1949            See the -w option for a description of the FMT syntax.  Note that
1950            file name FMT strings for all options are based on the original
1951            FILE specified from the command line, not the name of the source
1952            file specified by -srcfile.
1953
1954            For example, to copy metadata from NEF files to the corresponding
1955            JPG previews in a directory where other JPG images may exist:
1956
1957                exiftool -ext nef -tagsfromfile @ -srcfile %d%f.jpg dir
1958
1959            If more than one -srcfile option is specified, the files are
1960            tested in order and the first existing source file is processed.
1961            If none of the source files already exist, then exiftool uses the
1962            first -srcfile specified.
1963
1964            A FMT of "@" may be used to represent the original FILE, which may
1965            be useful when specifying multiple -srcfile options (eg. to fall
1966            back to processing the original FILE if no sidecar exists).
1967
1968            When this option is used, two special UserParam tags
1969            (OriginalFileName and OriginalDirectory) are generated to allow
1970            access to the original FILE name and directory.
1971
1972       -stay_open FLAG
1973            If FLAG is 1 or "True", causes exiftool keep reading from the -@
1974            ARGFILE even after reaching the end of file.  This feature allows
1975            calling applications to pre-load exiftool, thus avoiding the
1976            overhead of loading exiftool for each command.  The procedure is
1977            as follows:
1978
1979            1) Execute "exiftool -stay_open True -@ ARGFILE", where ARGFILE is
1980            the name of an existing (possibly empty) argument file or "-" to
1981            pipe arguments from the standard input.
1982
1983            2) Write exiftool command-line arguments to ARGFILE, one argument
1984            per line (see the -@ option for details).
1985
1986            3) Write "-execute\n" to ARGFILE, where "\n" represents a newline
1987            sequence.  (Note: You may need to flush your write buffers here if
1988            using buffered output.)  Exiftool will then execute the command
1989            with the arguments received up to this point, send a "{ready}"
1990            message to stdout when done (unless the -q or -T option is used),
1991            and continue trying to read arguments for the next command from
1992            ARGFILE.  To aid in command/response synchronization, any number
1993            appended to the "-execute" option is echoed in the "{ready}"
1994            message.  For example, "-execute613" results in "{ready613}".
1995
1996            4) Repeat steps 2 and 3 for each command.
1997
1998            5) Write "-stay_open\nFalse\n" to ARGFILE when done.  This will
1999            cause exiftool to process any remaining command-line arguments
2000            then exit normally.
2001
2002            The input ARGFILE may be changed at any time before step 5 above
2003            by writing the following lines to the currently open ARGFILE:
2004
2005                -stay_open
2006                True
2007                -@
2008                NEWARGFILE
2009
2010            This causes ARGFILE to be closed, and NEWARGFILE to be kept open.
2011            (Without the -stay_open here, exiftool would have returned to
2012            reading arguments from ARGFILE after reaching the end of
2013            NEWARGFILE.)
2014
2015            Note:  When writing arguments to a disk file there is a delay of
2016            up to 0.01 seconds after writing "-execute\n" before exiftool
2017            starts processing the command.  This delay may be avoided by
2018            sending a CONT signal to the exiftool process immediately after
2019            writing "-execute\n".  (There is no associated delay when writing
2020            arguments via a pipe with "-@ -", so the signal is not necessary
2021            when using this technique.)
2022
2023       -userParam PARAM[[^]=[VAL]]
2024            Set user parameter.  PARAM is an arbitrary user parameter name.
2025            This is an interface to the API UserParam option (see the
2026            Image::ExifTool Options documentation), and provides a method to
2027            access user-defined parameters in arguments to the -if and -p
2028            options as if they were any other tag.  Appending a hash tag ("#")
2029            to PARAM also causes the parameter to be extracted as a normal tag
2030            (in the UserParam group).  Similar to the -api option, the
2031            parameter value is set to 1 if =VAL is omitted, undef if just VAL
2032            is omitted with "=", or an empty string if VAL is omitted with
2033            "^=".
2034
2035                exiftool -p '$test from $filename' -userparam test=Hello FILE
2036
2037       Advanced formatting feature
2038
2039       An advanced formatting feature allows modification of the value of any
2040       tag interpolated within a -if or -p option argument, or a -tagsFromFile
2041       redirection string.  Tag names within these strings are prefixed by a
2042       "$" symbol, and an arbitrary Perl expression may be applied to the tag
2043       value by placing braces around the tag name and inserting the
2044       expression after the name, separated by a semicolon (ie.
2045       "${TAG;EXPR}").  The expression acts on the value of the tag through
2046       the default input variable ($_), and has access to the full ExifTool
2047       API through the current ExifTool object ($self) and the tag key ($tag).
2048       It may contain any valid Perl code, including translation ("tr///") and
2049       substitution ("s///") operations, but note that braces within the
2050       expression must be balanced.  The example below prints the camera Make
2051       with spaces translated to underlines, and multiple consecutive
2052       underlines replaced by a single underline:
2053
2054           exiftool -p '${make;tr/ /_/;s/__+/_/g}' image.jpg
2055
2056       An "@" may be added after the tag name to make the expression act on
2057       individual list items for list-type tags, simplifying list processing.
2058       Set $_ to undef to remove an item from the list.  As an example, the
2059       following command returns all subjects not containing the string "xxx":
2060
2061           exiftool -p '${subject@;$_=undef if /xxx/}' image.jpg
2062
2063       A default expression of "tr(/\\?*:|"<>\0)()d" is assumed if the
2064       expression is empty (ie. "${TAG;}").  This removes the characters / \ ?
2065       * : | < > and null from the printed value.  (These characters are
2066       illegal in Windows file names, so this feature is useful if tag values
2067       are used in file names.)
2068
2069       Helper functions
2070
2071       "DateFmt"
2072
2073       Simplifies reformatting of individual date/time values.  This function
2074       acts on a standard EXIF-formatted date/time value in $_ and formats it
2075       according to the specified format string (see the -d option).  To avoid
2076       trying to reformat an already-formatted date/time value, a "#" must be
2077       added to the tag name (as in the example below) if the -d option is
2078       also used.  For example:
2079
2080           exiftool -p '${createdate#;DateFmt("%Y-%m-%d_%H%M%S")}' a.jpg
2081
2082       "ShiftTime"
2083
2084       Shifts EXIF-formatted date/time string by a specified amount.  Start
2085       with a leading minus sign to shift backwards in time.  See
2086       Image::ExifTool::Shift.pl for details about shift syntax.  For example,
2087       to shift a date/time value back by one year:
2088
2089           exiftool -p '${createdate;ShiftTime("-1:0:0 0")}' a.jpg
2090
2091       "NoDups"
2092
2093       Removes duplicate items from a list with a separator specified by the
2094       -sep option.  This function is most useful when copying list-type tags.
2095       For example, the following command may be used to remove duplicate
2096       Keywords:
2097
2098           exiftool -sep '##' '-keywords<${keywords;NoDups}' a.jpg
2099
2100       The -sep option is necessary to split the string back into individual
2101       list items when writing to a list-type tag.
2102
2103       An optional flag argument may be set to 1 to cause "NoDups" to return
2104       undef if no duplicates existed, thus preventing the file from being
2105       rewritten unnecessarily:
2106
2107           exiftool -sep '##' '-keywords<${keywords;NoDups(1)}' a.jpg
2108
2109       Note that function names are case sensitive.
2110

WINDOWS UNICODE FILE NAMES

2112       In Windows, command-line arguments are specified using the current code
2113       page and are recoded automatically to the system code page.  This
2114       recoding is not done for arguments in ExifTool arg files, so by default
2115       filenames in arg files use the system code page.  Unfortunately, these
2116       code pages are not complete character sets, so not all file names may
2117       be represented.
2118
2119       ExifTool 9.79 and later allow the file name encoding to be specified
2120       with "-charset filename=CHARSET", where "CHARSET" is the name of a
2121       valid ExifTool character set, preferably "UTF8" (see the -charset
2122       option for a complete list).  Setting this triggers the use of Windows
2123       wide-character i/o routines, thus providing support for most Unicode
2124       file names (see note 4).  But note that it is not trivial to pass
2125       properly encoded file names on the Windows command line (see
2126       <https://exiftool.org/faq.html#Q18> for details), so placing them in a
2127       UTF-8 encoded -@ argfile and using "-charset filename=utf8" is
2128       recommended if possible.
2129
2130       A warning is issued if a specified filename contains special characters
2131       and the filename character set was not provided.  However, the warning
2132       may be disabled by setting "-charset filename=""", and ExifTool may
2133       still function correctly if the system code page matches the character
2134       set used for the file names.
2135
2136       When a directory name is provided, the file name encoding need not be
2137       specified (unless the directory name contains special characters), and
2138       ExifTool will automatically use wide-character routines to scan the
2139       directory.
2140
2141       The filename character set applies to the FILE arguments as well as
2142       filename arguments of -@, -geotag, -o, -p, -srcfile, -tagsFromFile,
2143       -csv=, -j= and -TAG<=.  However, it does not apply to the -config
2144       filename, which always uses the system character set.  The "-charset
2145       filename=" option must come before the -@ option to be effective, but
2146       the order doesn't matter with respect to other options.
2147
2148       Notes:
2149
2150       1) FileName and Directory tag values still use the same encoding as
2151       other tag values, and are converted to/from the filename character set
2152       when writing/reading if specified.
2153
2154       2) Unicode support is not yet implemented for other Windows-based
2155       systems like Cygwin.
2156
2157       3) See "WRITING READ-ONLY FILES" below for a note about editing read-
2158       only files with Unicode names.
2159
2160       4) Unicode file names with surrogate pairs (code points over U+FFFF)
2161       still cause problems.
2162

WRITING READ-ONLY FILES

2164       In general, ExifTool may be used to write metadata to read-only files
2165       provided that the user has write permission in the directory.  However,
2166       there are three cases where file write permission is also required:
2167
2168       1) When using the -overwrite_original_in_place option.
2169
2170       2) When writing only pseudo System tags (eg. FileModifyDate).
2171
2172       3) On Windows if the file has Unicode characters in its name, and a)
2173       the -overwrite_original option is used, or b) the "_original" backup
2174       already exists.
2175
2176       Hidden files in Windows behave as read-only files when attempting to
2177       write any real tags to the file -- an error is generated when using the
2178       -overwrite_original_in_place, otherwise writing should be successful
2179       and the hidden attribute will be removed.  But the -if option may be
2180       used to avoid processing hidden files (provided Win32API::File is
2181       available):
2182
2183           exiftool -if "$fileattributes !~ /Hidden/" ...
2184

READING EXAMPLES

2186       Note: Beware when cutting and pasting these examples into your
2187       terminal!  Some characters such as single and double quotes and hyphens
2188       may have been changed into similar-looking yet functionally-different
2189       characters by the text formatter used to display this documentation.
2190       Also note that Windows users must use double quotes instead of single
2191       quotes as below around arguments containing special characters.
2192
2193       exiftool -a -u -g1 a.jpg
2194            Print all meta information in an image, including duplicate and
2195            unknown tags, sorted by group (for family 1).  For performance
2196            reasons, this command may not extract all available metadata.
2197            (Metadata in embedded documents, metadata extracted by external
2198            utilities, and metadata requiring excessive processing time may
2199            not be extracted).  Add "-ee" and "-api RequestAll=3" to the
2200            command to extract absolutely everything available.
2201
2202       exiftool -common dir
2203            Print common meta information for all images in "dir".  "-common"
2204            is a shortcut tag representing common EXIF meta information.
2205
2206       exiftool -T -createdate -aperture -shutterspeed -iso dir > out.txt
2207            List specified meta information in tab-delimited column form for
2208            all images in "dir" to an output text file named "out.txt".
2209
2210       exiftool -s -ImageSize -ExposureTime b.jpg
2211            Print ImageSize and ExposureTime tag names and values.
2212
2213       exiftool -l -canon c.jpg d.jpg
2214            Print standard Canon information from two image files.
2215
2216       exiftool -r -w .txt -common pictures
2217            Recursively extract common meta information from files in
2218            "pictures" directory, writing text output to ".txt" files with the
2219            same names.
2220
2221       exiftool -b -ThumbnailImage image.jpg > thumbnail.jpg
2222            Save thumbnail image from "image.jpg" to a file called
2223            "thumbnail.jpg".
2224
2225       exiftool -b -JpgFromRaw -w _JFR.JPG -ext NEF -r .
2226            Recursively extract JPG image from all Nikon NEF files in the
2227            current directory, adding "_JFR.JPG" for the name of the output
2228            JPG files.
2229
2230       exiftool -a -b -W %d%f_%t%-c.%s -preview:all dir
2231            Extract all types of preview images (ThumbnailImage, PreviewImage,
2232            JpgFromRaw, etc.) from files in directory "dir", adding the tag
2233            name to the output preview image file names.
2234
2235       exiftool -d '%r %a, %B %e, %Y' -DateTimeOriginal -S -s -ext jpg .
2236            Print formatted date/time for all JPG files in the current
2237            directory.
2238
2239       exiftool -IFD1:XResolution -IFD1:YResolution image.jpg
2240            Extract image resolution from EXIF IFD1 information (thumbnail
2241            image IFD).
2242
2243       exiftool '-*resolution*' image.jpg
2244            Extract all tags with names containing the word "Resolution" from
2245            an image.
2246
2247       exiftool -xmp:author:all -a image.jpg
2248            Extract all author-related XMP information from an image.
2249
2250       exiftool -xmp -b a.jpg > out.xmp
2251            Extract complete XMP data record intact from "a.jpg" and write it
2252            to "out.xmp" using the special "XMP" tag (see the Extra tags in
2253            Image::ExifTool::TagNames).
2254
2255       exiftool -p '$filename has date $dateTimeOriginal' -q -f dir
2256            Print one line of output containing the file name and
2257            DateTimeOriginal for each image in directory "dir".
2258
2259       exiftool -ee -p '$gpslatitude, $gpslongitude, $gpstimestamp' a.m2ts
2260            Extract all GPS positions from an AVCHD video.
2261
2262       exiftool -icc_profile -b -w icc image.jpg
2263            Save complete ICC_Profile from an image to an output file with the
2264            same name and an extension of ".icc".
2265
2266       exiftool -htmldump -w tmp/%f_%e.html t/images
2267            Generate HTML pages from a hex dump of EXIF information in all
2268            images from the "t/images" directory.  The output HTML files are
2269            written to the "tmp" directory (which is created if it didn't
2270            exist), with names of the form 'FILENAME_EXT.html'.
2271
2272       exiftool -a -b -ee -embeddedimage -W Image_%.3g3.%s file.pdf
2273            Extract embedded JPG and JP2 images from a PDF file.  The output
2274            images will have file names like "Image_#.jpg" or "Image_#.jp2",
2275            where "#" is the ExifTool family 3 embedded document number for
2276            the image.
2277

WRITING EXAMPLES

2279       Note that quotes are necessary around arguments which contain certain
2280       special characters such as ">", "<" or any white space.  These quoting
2281       techniques are shell dependent, but the examples below will work for
2282       most Unix shells.  With the Windows cmd shell however, double quotes
2283       should be used (eg. -Comment="This is a new comment").
2284
2285       exiftool -Comment='This is a new comment' dst.jpg
2286            Write new comment to a JPG image (replaces any existing comment).
2287
2288       exiftool -comment= -o newdir -ext jpg .
2289            Remove comment from all JPG images in the current directory,
2290            writing the modified images to a new directory.
2291
2292       exiftool -keywords=EXIF -keywords=editor dst.jpg
2293            Replace existing keyword list with two new keywords ("EXIF" and
2294            "editor").
2295
2296       exiftool -Keywords+=word -o newfile.jpg src.jpg
2297            Copy a source image to a new file, and add a keyword ("word") to
2298            the current list of keywords.
2299
2300       exiftool -exposurecompensation+=-0.5 a.jpg
2301            Decrement the value of ExposureCompensation by 0.5 EV.  Note that
2302            += with a negative value is used for decrementing because the -=
2303            operator is used for conditional deletion (see next example).
2304
2305       exiftool -credit-=xxx dir
2306            Delete Credit information from all files in a directory where the
2307            Credit value was "xxx".
2308
2309       exiftool -xmp:description-de='k&uuml;hl' -E dst.jpg
2310            Write alternate language for XMP:Description, using HTML character
2311            escaping to input special characters.
2312
2313       exiftool -all= dst.jpg
2314            Delete all meta information from an image.  Note: You should NOT
2315            do this to RAW images (except DNG) since proprietary RAW image
2316            formats often contain information in the makernotes that is
2317            necessary for converting the image.
2318
2319       exiftool -all= -comment='lonely' dst.jpg
2320            Delete all meta information from an image and add a comment back
2321            in.  (Note that the order is important: "-comment='lonely' -all="
2322            would also delete the new comment.)
2323
2324       exiftool -all= --jfif:all dst.jpg
2325            Delete all meta information except JFIF group from an image.
2326
2327       exiftool -Photoshop:All= dst.jpg
2328            Delete Photoshop meta information from an image (note that the
2329            Photoshop information also includes IPTC).
2330
2331       exiftool -r -XMP-crss:all= DIR
2332            Recursively delete all XMP-crss information from images in a
2333            directory.
2334
2335       exiftool '-ThumbnailImage<=thumb.jpg' dst.jpg
2336            Set the thumbnail image from specified file (Note: The quotes are
2337            necessary to prevent shell redirection).
2338
2339       exiftool '-JpgFromRaw<=%d%f_JFR.JPG' -ext NEF -r .
2340            Recursively write JPEG images with filenames ending in "_JFR.JPG"
2341            to the JpgFromRaw tag of like-named files with extension ".NEF" in
2342            the current directory.  (This is the inverse of the "-JpgFromRaw"
2343            command of the "READING EXAMPLES" section above.)
2344
2345       exiftool -DateTimeOriginal-='0:0:0 1:30:0' dir
2346            Adjust original date/time of all images in directory "dir" by
2347            subtracting one hour and 30 minutes.  (This is equivalent to
2348            "-DateTimeOriginal-=1.5".  See Image::ExifTool::Shift.pl for
2349            details.)
2350
2351       exiftool -createdate+=3 -modifydate+=3 a.jpg b.jpg
2352            Add 3 hours to the CreateDate and ModifyDate timestamps of two
2353            images.
2354
2355       exiftool -AllDates+=1:30 -if '$make eq "Canon"' dir
2356            Shift the values of DateTimeOriginal, CreateDate and ModifyDate
2357            forward by 1 hour and 30 minutes for all Canon images in a
2358            directory.  (The AllDates tag is provided as a shortcut for these
2359            three tags, allowing them to be accessed via a single tag.)
2360
2361       exiftool -xmp:city=Kingston image1.jpg image2.nef
2362            Write a tag to the XMP group of two images.  (Without the "xmp:"
2363            this tag would get written to the IPTC group since "City" exists
2364            in both, and IPTC is preferred by default.)
2365
2366       exiftool -LightSource-='Unknown (0)' dst.tiff
2367            Delete "LightSource" tag only if it is unknown with a value of 0.
2368
2369       exiftool -whitebalance-=auto -WhiteBalance=tung dst.jpg
2370            Set "WhiteBalance" to "Tungsten" only if it was previously "Auto".
2371
2372       exiftool -comment-= -comment='new comment' a.jpg
2373            Write a new comment only if the image doesn't have one already.
2374
2375       exiftool -o %d%f.xmp dir
2376            Create XMP meta information data files for all images in "dir".
2377
2378       exiftool -o test.xmp -owner=Phil -title='XMP File'
2379            Create an XMP data file only from tags defined on the command
2380            line.
2381
2382       exiftool '-ICC_Profile<=%d%f.icc' image.jpg
2383            Write ICC_Profile to an image from a ".icc" file of the same name.
2384
2385       exiftool -hierarchicalkeywords='{keyword=one,children={keyword=B}}'
2386            Write structured XMP information.  See
2387            <https://exiftool.org/struct.html> for more details.
2388
2389       exiftool -trailer:all= image.jpg
2390            Delete any trailer found after the end of image (EOI) in a JPEG
2391            file.  A number of digital cameras store a large PreviewImage
2392            after the JPEG EOI, and the file size may be reduced significantly
2393            by deleting this trailer.  See the JPEG Tags documentation for a
2394            list of recognized JPEG trailers.
2395

COPYING EXAMPLES

2397       These examples demonstrate the ability to copy tag values between
2398       files.
2399
2400       exiftool -tagsFromFile src.cr2 dst.jpg
2401            Copy the values of all writable tags from "src.cr2" to "dst.jpg",
2402            writing the information to same-named tags in the preferred
2403            groups.
2404
2405       exiftool -TagsFromFile src.jpg -all:all dst.jpg
2406            Copy the values of all writable tags from "src.jpg" to "dst.jpg",
2407            preserving the original tag groups.
2408
2409       exiftool -all= -tagsfromfile src.jpg -exif:all dst.jpg
2410            Erase all meta information from "dst.jpg" image, then copy EXIF
2411            tags from "src.jpg".
2412
2413       exiftool -exif:all= -tagsfromfile @ -all:all -unsafe bad.jpg
2414            Rebuild all EXIF meta information from scratch in an image.  This
2415            technique can be used in JPEG images to repair corrupted EXIF
2416            information which otherwise could not be written due to errors.
2417            The "Unsafe" tag is a shortcut for unsafe EXIF tags in JPEG images
2418            which are not normally copied.  See the tag name documentation for
2419            more details about unsafe tags.
2420
2421       exiftool -Tagsfromfile a.jpg out.xmp
2422            Copy meta information from "a.jpg" to an XMP data file.  If the
2423            XMP data file "out.xmp" already exists, it will be updated with
2424            the new information.  Otherwise the XMP data file will be created.
2425            Only metadata-only files may be created like this (files
2426            containing images may be edited but not created).  See "WRITING
2427            EXAMPLES" above for another technique to generate XMP files.
2428
2429       exiftool -tagsFromFile a.jpg -XMP:All= -ThumbnailImage= -m b.jpg
2430            Copy all meta information from "a.jpg" to "b.jpg", deleting all
2431            XMP information and the thumbnail image from the destination.
2432
2433       exiftool -TagsFromFile src.jpg -title -author=Phil dst.jpg
2434            Copy title from one image to another and set a new author name.
2435
2436       exiftool -TagsFromFile a.jpg -ISO -TagsFromFile b.jpg -comment dst.jpg
2437            Copy ISO from one image and Comment from another image to a
2438            destination image.
2439
2440       exiftool -tagsfromfile src.jpg -exif:all --subifd:all dst.jpg
2441            Copy only the EXIF information from one image to another,
2442            excluding SubIFD tags.
2443
2444       exiftool '-FileModifyDate<DateTimeOriginal' dir
2445            Use the original date from the meta information to set the same
2446            file's filesystem modification date for all images in a directory.
2447            (Note that "-TagsFromFile @" is assumed if no other -TagsFromFile
2448            is specified when redirecting information as in this example.)
2449
2450       exiftool -TagsFromFile src.jpg '-xmp:all<all' dst.jpg
2451            Copy all possible information from "src.jpg" and write in XMP
2452            format to "dst.jpg".
2453
2454       exiftool '-Description<${FileName;s/\.[^.]*$//}' dir
2455            Set the image Description from the file name after removing the
2456            extension.  This example uses the "Advanced formatting feature" to
2457            perform a substitution operation to remove the last dot and
2458            subsequent characters from the file name.
2459
2460       exiftool -@ iptc2xmp.args -iptc:all= a.jpg
2461            Translate IPTC information to XMP with appropriate tag name
2462            conversions, and delete the original IPTC information from an
2463            image.  This example uses iptc2xmp.args, which is a file included
2464            with the ExifTool distribution that contains the required
2465            arguments to convert IPTC information to XMP format.  Also
2466            included with the distribution are xmp2iptc.args (which performs
2467            the inverse conversion) and a few more .args files for other
2468            conversions between EXIF, IPTC and XMP.
2469
2470       exiftool -tagsfromfile %d%f.CR2 -r -ext JPG dir
2471            Recursively rewrite all "JPG" images in "dir" with information
2472            copied from the corresponding "CR2" images in the same
2473            directories.
2474
2475       exiftool '-keywords+<make' image.jpg
2476            Add camera make to list of keywords.
2477
2478       exiftool '-comment<ISO=$exif:iso Exposure=${shutterspeed}' dir
2479            Set the Comment tag of all images in "dir" from the values of the
2480            EXIF:ISO and ShutterSpeed tags.  The resulting comment will be in
2481            the form "ISO=100 Exposure=1/60".
2482
2483       exiftool -TagsFromFile src.jpg -icc_profile dst.jpg
2484            Copy ICC_Profile from one image to another.
2485
2486       exiftool -TagsFromFile src.jpg -all:all dst.mie
2487            Copy all meta information in its original form from a JPEG image
2488            to a MIE file.  The MIE file will be created if it doesn't exist.
2489            This technique can be used to store the metadata of an image so it
2490            can be inserted back into the image (with the inverse command)
2491            later in a workflow.
2492
2493       exiftool -o dst.mie -all:all src.jpg
2494            This command performs exactly the same task as the command above,
2495            except that the -o option will not write to an output file that
2496            already exists.
2497
2498       exiftool -b -jpgfromraw -w %d%f_%ue.jpg -execute -b -previewimage -w
2499       %d%f_%ue.jpg -execute -tagsfromfile @ -srcfile %d%f_%ue.jpg
2500       -overwrite_original -common_args --ext jpg DIR
2501            [Advanced] Extract JpgFromRaw or PreviewImage from all but JPG
2502            files in DIR, saving them with file names like "image_EXT.jpg",
2503            then add all meta information from the original files to the
2504            extracted images.  Here, the command line is broken into three
2505            sections (separated by -execute options), and each is executed as
2506            if it were a separate command.  The -common_args option causes the
2507            "--ext jpg DIR" arguments to be applied to all three commands, and
2508            the -srcfile option allows the extracted JPG image to be the
2509            source file for the third command (whereas the RAW files are the
2510            source files for the other two commands).
2511

RENAMING EXAMPLES

2513       By writing the "FileName" and "Directory" tags, files are renamed
2514       and/or moved to new directories.  This can be particularly useful and
2515       powerful for organizing files by date when combined with the -d option.
2516       New directories are created as necessary, but existing files will not
2517       be overwritten.  The format codes %d, %f and %e may be used in the new
2518       file name to represent the directory, name and extension of the
2519       original file, and %c may be used to add a copy number if the file
2520       already exists (see the -w option for details).  Note that if used
2521       within a date format string, an extra '%' must be added to pass these
2522       codes through the date/time parser.  (And further note that in a
2523       Windows batch file, all '%' characters must also be escaped, so in this
2524       extreme case '%%%%f' is necessary to pass a simple '%f' through the two
2525       levels of parsing.)  See <https://exiftool.org/filename.html> for
2526       additional documentation and examples.
2527
2528       exiftool -filename=new.jpg dir/old.jpg
2529            Rename "old.jpg" to "new.jpg" in directory "dir".
2530
2531       exiftool -directory=%e dir
2532            Move all files from directory "dir" into directories named by the
2533            original file extensions.
2534
2535       exiftool '-Directory<DateTimeOriginal' -d %Y/%m/%d dir
2536            Move all files in "dir" into a directory hierarchy based on year,
2537            month and day of "DateTimeOriginal".  eg) This command would move
2538            the file "dir/image.jpg" with a "DateTimeOriginal" of "2005:10:12
2539            16:05:56" to "2005/10/12/image.jpg".
2540
2541       exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d dir
2542            Same effect as above except files are copied instead of moved.
2543
2544       exiftool '-filename<%f_${model;}.%e' dir
2545            Rename all files in "dir" by adding the camera model name to the
2546            file name.  The semicolon after the tag name inside the braces
2547            causes characters which are invalid in Windows file names to be
2548            deleted from the tag value (see the "Advanced formatting feature"
2549            for an explanation).
2550
2551       exiftool '-FileName<CreateDate' -d %Y%m%d_%H%M%S%%-c.%%e dir
2552            Rename all images in "dir" according to the "CreateDate" date and
2553            time, adding a copy number with leading '-' if the file already
2554            exists ("%-c"), and preserving the original file extension (%e).
2555            Note the extra '%' necessary to escape the filename codes (%c and
2556            %e) in the date format string.
2557
2558       exiftool -r '-FileName<CreateDate' -d %Y-%m-%d/%H%M_%%f.%%e dir
2559            Both the directory and the filename may be changed together via
2560            the "FileName" tag if the new "FileName" contains a '/'.  The
2561            example above recursively renames all images in a directory by
2562            adding a "CreateDate" timestamp to the start of the filename, then
2563            moves them into new directories named by date.
2564
2565       exiftool '-FileName<${CreateDate}_$filenumber.jpg' -d %Y%m%d -ext jpg .
2566            Set the filename of all JPG images in the current directory from
2567            the CreateDate and FileNumber tags, in the form
2568            "20060507_118-1861.jpg".
2569

GEOTAGGING EXAMPLES

2571       ExifTool implements geotagging via 3 special tags: Geotag (which for
2572       convenience is also implemented as an exiftool option), Geosync and
2573       Geotime.  The examples below highlight some geotagging features.  See
2574       <https://exiftool.org/geotag.html> for additional documentation.
2575
2576       exiftool -geotag track.log a.jpg
2577            Geotag an image ("a.jpg") from position information in a GPS track
2578            log ("track.log").  Since the "Geotime" tag is not specified, the
2579            value of DateTimeOriginal is used for geotagging.  Local system
2580            time is assumed unless DateTimeOriginal contains a timezone.
2581
2582       exiftool -geotag t.log -geotime='2009:04:02 13:41:12-05:00' a.jpg
2583            Geotag an image with the GPS position for a specific time.
2584
2585       exiftool -geotag log.gpx '-xmp:geotime<createdate' dir
2586            Geotag all images in directory "dir" with XMP tags instead of EXIF
2587            tags, based on the image CreateDate.
2588
2589       exiftool -geotag a.log -geosync=-20 dir
2590            Geotag images in directory "dir", accounting for image timestamps
2591            which were 20 seconds ahead of GPS.
2592
2593       exiftool -geotag a.log -geosync=1.jpg -geosync=2.jpg dir
2594            Geotag images using time synchronization from two previously
2595            geotagged images (1.jpg and 2.jpg), synchronizing the image and
2596            GPS times using a linear time drift correction.
2597
2598       exiftool -geotag a.log '-geotime<${createdate}+01:00' dir
2599            Geotag images in "dir" using CreateDate with the specified
2600            timezone.  If CreateDate already contained a timezone, then the
2601            timezone specified on the command line is ignored.
2602
2603       exiftool -geotag= a.jpg
2604            Delete GPS tags which may have been added by the geotag feature.
2605            Note that this does not remove all GPS tags -- to do this instead
2606            use "-gps:all=".
2607
2608       exiftool -xmp:geotag= a.jpg
2609            Delete XMP GPS tags which were added by the geotag feature.
2610
2611       exiftool -xmp:geotag=track.log a.jpg
2612            Geotag an image with XMP tags, using the time from
2613            DateTimeOriginal.
2614
2615       exiftool -geotag a.log -geotag b.log -r dir
2616            Combine multiple track logs and geotag an entire directory tree of
2617            images.
2618
2619       exiftool -geotag 'tracks/*.log' -r dir
2620            Read all track logs from the "tracks" directory.
2621
2622       exiftool -p gpx.fmt -d %Y-%m-%dT%H:%M:%SZ dir > out.gpx
2623            Generate a GPX track log from all images in directory "dir".  This
2624            example uses the "gpx.fmt" file included in the full ExifTool
2625            distribution package and assumes that the images in "dir" have all
2626            been previously geotagged.
2627

PIPING EXAMPLES

2629       cat a.jpg | exiftool -
2630            Extract information from stdin.
2631
2632       exiftool image.jpg -thumbnailimage -b | exiftool -
2633            Extract information from an embedded thumbnail image.
2634
2635       cat a.jpg | exiftool -iptc:keywords+=fantastic - > b.jpg
2636            Add an IPTC keyword in a pipeline, saving output to a new file.
2637
2638       curl -s http://a.domain.com/bigfile.jpg | exiftool -fast -
2639            Extract information from an image over the internet using the cURL
2640            utility.  The -fast option prevents exiftool from scanning for
2641            trailer information, so only the meta information header is
2642            transferred.
2643
2644       exiftool a.jpg -thumbnailimage -b | exiftool -comment=wow - | exiftool
2645       a.jpg -thumbnailimage'<=-'
2646            Add a comment to an embedded thumbnail image.  (Why anyone would
2647            want to do this I don't know, but I've included this as an example
2648            to illustrate the flexibility of ExifTool.)
2649

EXIT STATUS

2651       The exiftool application exits with a status of 0 on success, or 1 if
2652       an error occurred, or 2 if all files failed the -if condition (for any
2653       of the commands if -execute was used).
2654

AUTHOR

2656       Copyright 2003-2020, Phil Harvey
2657
2658       This is free software; you can redistribute it and/or modify it under
2659       the same terms as Perl itself.
2660

SEE ALSO

2662       Image::ExifTool(3pm), Image::ExifTool::TagNames(3pm),
2663       Image::ExifTool::Shortcuts(3pm), Image::ExifTool::Shift.pl
2664
2665
2666
2667perl v5.32.0                      2020-07-28                       EXIFTOOL(1)
Impressum