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'.