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 {} \;

Respuestas:


4
find -type d -name b -exec echo "mv {}/* {}/..; rmdir {}" \; | sh

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.