I don’t really know that much about bash scripts OR imagemagick, but I am attempting to create a script in which you can give some sort of regexp matching pattern for a list of images and then process those into new files that have a given filename prefix.
for example given the following dir listing:
allfiles01.jpg allfiles02.jpg
allfiles03.jpg
i would like to call the script like so:
./resisemany.sh allfiles*.jpg 30 newnames*.jpg
the end result of this would be that you get a bunch of new files with newnames, the numbers match up,
so far what i have is:
IMAGELIST=$1
RESIEZFACTOR=$2
NUMIMGS=length($IMAGELIST)
for(i=0; i<NUMIMGS; i++)
convert $IMAGELIST[i] -filter bessel -resize . RESIZEFACTOR . % myfile.JPG
Thanks for any help…
The parts that I obviously need help with are
1. how to give a bash script matching criteria that it understands
2. how to use the $2 without having it match the 2nd item in the image list
3. how to get the length of the image list
4. how to create a proper for loop in such a case
5. how to do proper text replacement for a shell command whereby you are appending items as i allude to.
jml
Probably the way a standard program would work would be to take an “in” filename pattern and an “out” filename pattern and perform the operation on each file in the current directory that matches the “in” pattern, substituting appropriate parts into the “out” pattern. This is pretty easy if you have a hard-coded pattern, when you can write one-off commands like
In order to make a script that will do this with any pattern, though, you need something more complicated because your filename transformation might be something more complicated than just replacing one part with another. Unfortunately Bash doesn’t really give you a way to identify what part of the filename matched a specific part of the pattern, so you’d have to use a more capable regular expression engine, like
sedfor example:That could be invoked as
(note the single quotes!) and it would resize
allfiles1.jpgtonewnames1.jpg, etc. But then you’d wind up basically having to learnsed‘s regular expression syntax to specify your in and out patterns. (It’s not that bad, really)