Você pode usar find
:
find . -regextype posix-awk -type d -regex ".*/(.*)/$" -exec sh -c "mv {}/* {}/../" \; -delete
-
-regextype posix-awk
: precisamos usarposix-awk
regextype para usar a referência anterior ()
-
-type d
: segmenta diretórios -
-regex ".*/(.*)/$"
: segmenta arquivos correspondentes a*/bar/bar
-
-exec sh -c "mv {}/* {}/../"
: move diretórios direcionados para seus diretórios pais -
-delete
: elimina diretórios direcionados
Observação: você não pode usar rmdir {}
dentro de -exec
( find
retornará um erro No such file or directory
), você precisa usar a opção -delete
após -exec
.