Is there a way to make "mv" fail silently?
Are you looking for this?
$ mv file dir/
mv: cannot stat ‘file’: No such file or directory
$ mv file dir/ 2>/dev/null
# <---- Silent ----->
Actually, I don't think muting mv
is a good approach (remember it might report you also on other things which might be of interest ... eg. missing ~/bar
). You want to mute it only in case your glob expression doesn't return results. In fact rather not execute it at all.
[ -n "$(shopt -s nullglob; echo foo*)" ] && mv foo* ~/bar/
Doesn't look very appealing, and works only in bash
.
OR
[ 'foo*' = "$(echo foo*)" ] || mv foo* ~/bar/
only except you are in bash
with nullglob
set. You pay a price of 3x repetition of glob pattern though.
find . -maxdepth 1 -name 'foo*' -type f -print0 | xargs -0r mv -t ~/bar/
— GNU's mv
has nice "destination first" option (-t
) and xargs
can skip running its command if there's no input at all (-r
). Using of -print0
and -0
correspondingly makes sure there wouldn't be a mess when filenames contain spaces and other "funny" stuff.