Você precisa que a expansão do caractere curinga ocorra em um shell executado depois que file tenha sido substituído pelo nome do arquivo correspondente. Então você precisa iniciar um shell a partir de xargs .
Melhor do que usar xargs , use o predicado exec para find . É mais simples e não tem problemas de citação.
find -maxdepth 1 -regex 'myRegexExpHere' -exec sh -c 'mv "$0"/* Desktop/New\ folder/' {} \;
Você provavelmente está complicando demais as coisas. Esse uso simples de find pode ser expresso diretamente na maioria das camadas. O Ksh tem uma sintaxe para expressões regulares:
-
@(EXPR1|EXPR2)corresponde aEXPR1ouEXPR2 -
*(EXPR)corresponde a 0 ou mais ocorrências deEXPR -
+(EXPR)corresponde a uma ou mais ocorrências deEXPR -
?(EXPR)corresponde a 0 ou 1 ocorrência deEXPR
Essa sintaxe também está disponível no bash se você executar shopt -s extglob primeiro e, em zsh, se você executar setopt ksh_glob primeiro. Então você pode usar
mv REGEX/* Desktop/New\ folder/