Como os arquivos precisam acabar em diretórios diferentes, você precisa executar mv
várias vezes, pelo menos uma vez por diretório de destino. Você pode fazer isso executando mv
em um loop .
for x in /root/*
do
mv -i "$x"/*/*/*/* "$x"
done
O corpo do loop (o comando mv
) é executado para cada entrada no diretório /root
, por sua vez. Em cada execução do corpo do loop, "$x"
é substituído pelo caminho /root/subN
. O comando mv -i "$x"/*/*/*/* "$x"
move um arquivo como /root/sub1/aaaa/bbbb/cccc/dddd
para o diretório /root/sub1
, ou seja, o arquivo é movido para /root/sub1/dddd
.
Com a opção -i
, mv
perguntará se o arquivo de destino já existe, o que pode acontecer se, por exemplo, você tiver /root/sub1/aaa1/bbb/ccc/ddd
e /root/sub1/aaa2/bbb/ccc/ddd
.