Se você tiver encontrar GNU , você pode fazer (modificado do seu exemplo):
find /path/to -type f -execdir mv {} .. \;
mas o Solaris usa POSIX como padrão, que não possui essa opção. Às vezes, as ferramentas GNU estão disponíveis (como por exemplo, gfind
).
Além disso, a opção -mindepth
provavelmente seria muito útil nesse caso para retornar apenas arquivos em uma determinada profundidade de diretório mínima.
Sem o GNU find , usando um script:
#!/bin/sh
IFS='
'
for i in $(find /path/to -type f); do
echo mv -- "${i}" "${i%/*/*}"
done
Isso funcionará, a menos que os nomes dos arquivos contenham novas linhas. Execute-o como acima primeiro e remova o echo
se ele estiver OK (veja também a observação -mindepth
acima).