Para cp
, o destino é o último argumento na linha de comando. Você especificou 2/g
como o último argumento.
Antes de cp
ser executado, os parâmetros do comando são expandidos. 1/*
expande para 1/a 1/b 1/c
. 2/*
expande para 2/f 2/g
. O comando final executado é cp -r 1/a 1/b 1/c 2/f 2/g
, que copiará todos os argumentos (exceto o último) para 2/g
.
Se você pretende copiar as coisas para 2
, o segundo glob não é necessário, fazendo o comando cp -r 1/* 2/
. Se você pretende copiar as coisas para vários destinos, não é possível especificar isso com apenas cp
; você pode usar um pequeno loop, como o seguinte:
#!/bin/sh
for path in ./2/*/; do
cp -r 1/* "$path"
done