Supondo que você tenha o GNU ( find
, xargs
, & mv
), mude seu comando para isto:
$ find /foot/bar/ -name '*.csv' -print0 | xargs -0 mv -t some_dir
trecho da página de manualmv
-t, --target-directory=DIRECTORY
move all SOURCE arguments into DIRECTORY
O xargs ...
acima irá construir o comando para que as chamadas a serem movidas sejam assim:
$ mv 1.csv 2.csv 3.csv ... -t some_dir
Não precisa de xargs
Você pode ignorar essa abordagem fazendo com que find
faça todo o trabalho:
$ find /foot/bar/ -name '*.csv' -exec mv -t some_dir {} +
Por que você precisa do mv -t ...
?
Isso tem a ver com a maneira como o xargs
está construindo o conjunto de arquivos para passar para o comando que será executado a cada vez (ou seja, mv ...
).
Quando você executa o comando mv
manualmente, controla quantos nomes de arquivo são passados para ele e, portanto, não precisa se preocupar em precisar do -t my_dir
, pois sempre colocará o diretório de destino por último.