Com find , você não deve concatenar comandos por meio da canalização.
Ele tem um bom sinalizador -regex para o qual você pode passar sua string de correspondência de nome de arquivo:
find . -regextype egrep -regex ".*facility_([0-9]*)\+SOURCE[0-9]*.*" -exec mv {} DIRECTORY \;
O% final \; passa cada um dos nomes de arquivos correspondentes para mv no lugar do {} .
Como você pode ver, você precisa usar .* no começo e no final da expressão regular porque find precisa ser mach no caminho todo :
-regex pattern
File name matches regular expression pattern. This is a match on the whole path, not a search. For example, to match a file named './fubar3', you can use the regular expression '.*bar.' or '.*b.*3', but not 'f.*r3'.