No OS X:
ls file_* | xargs -J {} mv {} temp/
No Linux:
ls file_* | xargs -i {} mv {} temp/
Estou tentando isso e não está funcionando:
ls file_* | xargs mv {} temp/
Alguma idéia?
find . -name "file_*" -maxdepth 0 -exec mv {} temp/ \;
find
é melhor que ls
, onde pode haver mais arquivos que o número de argumentos de programa permitidos pelo seu shell.
Use -t "especifica o alvo directoty" em mv, ele deve trabalhar movendo arquivos * para o diretório de destino / temp
ex: - #ls -l arquivo * | xargs mv -t / temp
Como sugerido por @ user1953864: { -i
, -J
} especifique um token que será substituído pelos argumentos recebidos.
Por exemplo, ls
:
something.java exampleModel.java NewsQueryImpl.java readme someDirectory/
Em seguida, mover todos os arquivos java para a pasta someDirectory com xargs
seria o seguinte:
No Linux
ls *.java | xargs -i mv {} someDirectory/
No MacOS
ls *.java | xargs -J mv {} someDirectory
Outra solução pode ser:
for f in file_* ; do
mv $f temp/$f
done
A desvantagem é que ele cria um novo processo mv
para cada arquivo.