Mover archivos del directorio hacia arriba un nivel

Mover archivos del directorio hacia arriba un nivel

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 {} .. \;

información relacionada