Use this command:
egrep -lRZ "\.jpg|\.png|\.gif" . \
| xargs -0 -l sed -i -e 's/\.jpg\|\.gif\|\.png/.bmp/g'
-
egrep
: find matching lines using extended regular expressions-
-l
: only list matching filenames -
-R
: search recursively through all given directories -
-Z
: use\0
as record separator -
"\.jpg|\.png|\.gif"
: match one of the strings".jpg"
,".gif"
or".png"
-
.
: start the search in the current directory
-
-
xargs
: execute a command with the stdin as argument-
-0
: use\0
as record separator. This is important to match the-Z
ofegrep
and to avoid being fooled by spaces and newlines in input filenames. -
-l
: use one line per command as parameter
-
-
sed
: the stream editor-
-i
: replace the input file with the output without making a backup -
-e
: use the following argument as expression -
's/\.jpg\|\.gif\|\.png/.bmp/g'
: replace all occurrences of the strings".jpg"
,".gif"
or".png"
with".bmp"
-