Remova o subdiretório do caminho e promova os arquivos para pai

Remova o subdiretório do caminho e promova os arquivos para pai

Eu tenho vários arquivos que contêm em seu caminho uma pasta duplicada (nos exemplos a seguir bar). Gostaria de remover este diretório e mover qualquer conteúdo contido para o pai. Para usar pesquisar e substituir como metáfora, gostaria de substituir /foo/por /no caminho.

Estado inicial:

foo/bar/some_file.txt
foo/another_file.txt
quux/bar/yet_another_file.txt

Meta:

foo/some_file.txt
foo/another_file.txt
quux/yet_another_file.txt

Tenho preferência por resolver isso com bash, mas estaria aberto a qualquer solução que não tenha dependências e funcione em Linux.


Caso isso seja útil para quem se depara com este tópico, háuma resposta existente para Windowsusando robocópia.

Responder1

Acabei resolvendo assim:

for iteration_path in ${1}/*; do
  if [[ ! -z $iteration_path ]]; then
    mv "${iteration_path}"/bar/* "${iteration_path}";
    rmdir "${iteration_path}"/bar;
  fi
done

Se alguém puder expandir as sugestões do AFH sobreexpansão de parâmetros, eu estaria interessado se essa for uma solução mais elegante.

informação relacionada