Exifgrep is a shell script which applies egrep(1) to the output of exifprobe -L,
permitting easy selection and minor reformatting of output items.
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
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 readable"
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
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.
file arguments may be directories, which will be searched via find
for all image types recognized by exifprobe.
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.
force exifprobe to print tag numbers for all itemes that have them, so
that matches may be made on hex or decimal tag numbers.
turn on color output from exifprobe
print a usage message (help)
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).
report in "variable" format, but with a Bourne-compatible export
report numerical values rather than interpreted strings, for fields which
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" expression.
All remaining arguments are interpreted as image filenames.