Eliminar subdirectorio de la ruta y promover archivos a nivel principal

Eliminar subdirectorio de la ruta y promover archivos a nivel principal

Tengo un montón de archivos que contienen en su ruta una carpeta duplicada (en los siguientes ejemplos bar). Me gustaría eliminar este directorio y mover cualquier contenido contenido al directorio principal. Para utilizar buscar y reemplazar como metáfora, me gustaría reemplazar /foo/con /en la ruta.

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

Prefiero resolver esto con bash, pero estaría abierto a cualquier solución que no tenga dependencias y funcione en Linux.


En caso de que esto sea útil para cualquiera que encuentre este hilo, hayuna respuesta existente para Windowsusando robocopia.

Respuesta1

Terminé resolviéndolo así:

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

Si alguien puede ampliar las sugerencias de AFH sobreexpansión de parámetros, Me interesaría si esa fuera una solución más elegante.

información relacionada