Buscar y eliminar carpeta pero no contenido

4

Estoy tratando de encontrar todas las carpetas nombradas by eliminarlas, sin eliminar su contenido (ya sean carpetas, archivos, archivos ocultos, ...).

Entonces, por ejemplo, un archivo en una ruta /a/b/c/filedebería convertirse/a/c/file

Esto es lo que he probado, que no funciona:

find -type d -name b -exec mv {}/* {} \; -exec rmdir {} \;
usuario311987
fuente

Respuestas:

4
find -type d -name b -exec echo "mv {}/* {}/..; rmdir {}" \; | sh
Ciro
fuente
Bien gracias. ¿Qué pasa con las carpetas / archivos ocultos?
user311987
mvy rmdirmanejar ambos correctos.
Cyrus
Me gusta esta solución, incluso si puede encontrar algunos problemas en el caso de que solo exista un directorio con el mismo nombre del que desea subir en el directorio padre (cuando realiza, mv {}/* {}/por ejemplo). Con los archivos en su lugar, sobrescribirá los del directorio superior sin solicitarlo. Para administrar todo, creo que es acogedor hacer un guión
Hastur
Cyrus, no es el mv y rmdir lo que me preocupa de los archivos ocultos, sino el comodín.
user311987
Agregue shopt -s dotglob; antes mvy reemplace shpor bashpara capturar archivos de puntos y directorios también.
Cyrus