
Tengo una estructura de archivos con varias subcarpetas donde me gustaría buscar todas las subcarpetas que contienen una determinada cadena ("sub*") y luego mover todos los archivos en estas carpetas encontradas hacia arriba un nivel desde cada una de sus respectivas ubicaciones. E incluso eliminar potencialmente la carpeta entonces vacía, pero también podría hacerlo con un segundo paso.
Respuesta1
Esto debería hacerlo:
find /path/to/base/folder/ -type d -name 'sub*' -exec bash -c 'mv {}/* "$(dirname {})"' \;
NOTA: esto no moverá archivos ocultos (cuyo nombre comienza con .
)
Respuesta2
find /path/to -type f -execdir mv {} .. \;