Mover todos los archivos en subdirectorios a un directorio principal

Mover todos los archivos en subdirectorios a un directorio principal

Tengo un directorio llamado "público" que contiene miles de subdirectorios, por ejemplo:

public/63a/e9b/79a/file.pdf 
public/64a/2cd/184/other_file.pdf
...

Mi objetivo es mover todos los archivos contenidos en esos subdirectorios al directorio principal (es decir, público).
Supongo que necesito una función recursiva para hacer eso.
Alguien me puede ayudar ?

Respuesta1

La herramienta para hacerlo ya forma parte del entorno estándar de Linux:

find public -type f -exec mv {} public/ \;

Explicación:

Queremos findarchivos pero no directorios ( -type f) en publicsu subestructura y en cada archivo encontrado ejecutar ( -exec) un comando, que es moverlo (representado por {}) a público.

El punto y coma escapado simplemente marca el final de la -execsecuencia.

información relacionada