A resposta de fede.evol falha se os caminhos contiverem espaços em branco. A saída de find
ou ls
não deve ser usada em uma substituição de comando .
A maneira correta de lidar com todos os nomes de arquivos (exceto caminhos com novas linhas) seria:
find /somewhere -name "*.mkv" -exec dirname {} \; | uniq | \
while IFS= read -r dir; do echo cp -- "$dir" /other/; done
Dessa forma, cada pasta de /somewhere
é copiada para /other/
. Observe que a barra final é obrigatória, porque senão o alvo sempre seria sobrescrito.