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
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)?
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
Tags command-line directory mv files