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.