Mover varios archivos desde varios directorios al destino relativo al origen

Mover varios archivos desde varios directorios al destino relativo al origen

Teniendo la siguiente jerarquía de archivos:

dir
├── dirA
│   └── snapshot
│       └── subdir1
│           └── file1
└── dirB
    └── snapshot
        └── subdir2
            └── file2

Quiero mover archivos de cada directorio de instantánea/subdirectorio al directorio principal de la instantánea con un solo comando. Eso sería:

dir
├── dirA
│   └── file1
│   └── snapshot
│       └── subdir1
└── dirB
    └── file2
    └── snapshot
        └── subdir2

Lo intenté mv dir/*/snapshot/*/* ../../, pero como la parte de destino ../../es relativa al directorio de trabajo, obviamente no funciona.

¿Es posible con comandos bash (ya que nunca escribí una sola línea de script bash)?

Respuesta1

Según la aguda observación de @Don_Christ, esta respuesta se editó guardando así una subcapa:

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done

información relacionada