exifgrep - select and reformat the output of exifprobe
exifgrep [options] [egrep_options] egrep_pattern [NOT egrep-pattern]
Exifgrep is a shell script which applies egrep(1) to the output of
exifprobe -L, permitting easy selection and minor reformatting of
exifprobe is small, fast, and utterly sycophantic in its desire to
report everything it finds in an image. exifgrep applies the regular
expression matching capabilities of egrep to the output barrage to
extract only wanted information.
exifgrep also performs a mild form of selection on the output fields of
exifprobe -L. Many items reported by exifprobe are represented in the
image file by a number which compactly represents a defined value.
E.g. exifprobe -L may report
TIFF.Ifd1.ResolutionUnit = 2 = ’pixels per inch’
where the value “2” must be interpreted to mean that resolution values
(TIFF.IFd1.Xresolution and IFF.IFd1.YResolution) are recorded in pixels
per inch, rather than, say, pixels per centimeter. exifprobe reports
both fields; exifprobe may also report interpreted values for items
which are recorded in unfamiliar units, such as
JPEG.APP1.Ifd0.Exif.FNumber = 5.6 APEX = ’f7.0’
In all such cases, exifgrep reports (by default) only the "human
TIFF.Ifd1.ResolutionUnit = ’pixels per inch’
JPEG.APP1.Ifd0.Exif.FNumber = ’f7.0’
unless the "-num" option is given to select the numerical value.
In addition, a ‘variable’ format may be selected ("-var") which
eliminates whitespace, providing a format which typical shells may use
directly to set variables for further processing. E.g.
TIFF.Ifd1.ResolutionUnit=’pixels per inch’
-r file arguments may be directories, which will be searched via
find for all image types recognized by exifprobe.
-n force exifprobe to print a filename for each line of its
output, which exifgrep will turn into a comment at the end of
each matching line.
-t force exifprobe to print tag numbers for all itemes that have
them, so that matches may be made on hex or decimal tag
-c turn on color output from exifprobe
-h print a usage message (help)
-var report in "variable" format, which may be directly ‘sourced’
by any Bourne-compatible shell (except that most shells will
insist that the dots must be replaced, e.g. by underscores).
-export report in "variable" format, but with a Bourne-compatible
-num report numerical values rather than interpreted strings, for
fields which have both.
NOTE: the -var and -export options are obsolescent; they are retained
for compatibility with earlier versions of exifprobe. A post-processor
such as reformat.sh may be more effective for the current version if
shell-compatible output is desired.
Any option not recognized by the script will be passed on to egrep.
The first non-option argument will be used as the pattern passed to
egrep. This may be followed by the keyword NOT and an expression
representing matches to be rejected. This pattern will be passed to
egrep -v. Only one argument of each type may be given, and the
"accept" expression (if given) must appear before the "reject"
All remaining arguments are interpreted as image filenames.
Duane H. Hesser