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.