Você pode usar -I
para definir um marcador de lugar que será substituído por cada valor dos argumentos alimentados para xargs
. Por exemplo,
ls -1 | xargs -I '{}' echo '{}'
chamará echo
uma vez por linha da saída de ls
. Você geralmente verá '{}'
usado, presumivelmente porque é o mesmo que o espaço reservado de find
.
No seu caso, você também precisa pré-processar a saída de file
para extrair os nomes dos arquivos correspondentes; como há um grep
, podemos usar apenas awk
para fazer ambos e simplificar também a invocação de file
:
file * | awk -F: '/image/ { print $1 }' | xargs -I '{}' mv '{}' destination
Se você tem o GNU mv
, pode usar apenas -t
para passar vários arquivos de origem:
file * | awk -F: '/image/ { print $1 }' | xargs mv -t destination