Mover vários arquivos de vários diretórios para o destino relativo à origem

1

Tendo a seguinte hierarquia de arquivos:

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

Eu quero mover os arquivos de cada diretório snapshot / subdir para o diretório pai do snapshot em um único comando. Isso seria:

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

Eu tentei mv dir/*/snapshot/*/* ../../ , mas como a parte de destino ../../ é relativa ao diretório de trabalho, obviamente não funciona.

É possível com comandos bash (desde que eu nunca escrevi uma única linha de script bash)?

    
por sclarckone 07.04.2017 / 19:40

1 resposta

1

Com base na observação apurada de @ Don_Christ, esta resposta foi editada, salvando assim um subnível:

for i in dir/*/snapshot; do
     mv "$i"/*/* "$i"/..
done
    
por 07.04.2017 / 20:06