Você pode torná-lo independente de shell e condensá-lo em um comando find
:
find . -type f -name '*.zip' -exec \
sh -c 'echo cp -- "$0" "$(dirname "$0")"/..' {} \;
Remova o echo
quando tiver certeza de que ele faz o que você deseja.
Use find
para localizar os arquivos. Execute um shell com -exec sh -c
, passando o arquivo encontrado com {}
como o primeiro argumento para esse shell. O shell terá, portanto, o caminho do arquivo disponível como $0
.
Você pode usar dirname "$0"
e uma substituição de comando ( $(…)
) para obter a diretório pai do arquivo. Acrescente o máximo de /..
que você deseja percorrer mais.
Observe que citou os nomes dos arquivos para evitar que arquivos com novas linhas ou espaços em seus nomes sejam expandidos incorretamente .