find dir1/ -name "file.name.[1-3]" -exec bash -c 'mv {} dir2/$(basename "{}").$(date +%Y%m%d%H%M%S)' \;
Он печатает каждый элемент, потому что вы установили переменную, а не массив. Чтобы установить массив, вам нужно будет сделать:
args=($@)
$@
ведет себя иначе, чем обычная переменная массива без индекса, потому что $@
имеет "интегрированный индекс" :Это всегда означает "все элементы".
set -- a b c
echo $@
a b c
set -x
var=$@
+ var='a b c'
ar=(a b c)
+ ar=(a b c)
echo $ar
+ echo a
a