Para este tipo de estructura dir:
/config/filegroups/filegroupA/files/fileA1.txt
/config/filegroups/filegroupA/files/fileA2.txt
/config/filegroups/filegroupB/files/fileB1.txt
/config/filegroups/filegroupB/files/fileB2.txt
...
Sé que puedo usar rm -rf /config/filesgroupspara eliminar la carpeta principal y todas las subcarpetas ...
pero quiero eliminar sólo /filegroupA, /filegroupB, etc., y no elimine/config/filegroups

rm -rf /config/filegroups/filegroups{A,B}?bashno incluye '.' carpetas en la expansión del nombre de ruta. Lo que puede o no ser deseado. Yo lo hagoshopt -s dotgloben.bashrcarreglar eso. Solo una nota al margen que alguien podría encontrar útil;).rm -rf /*lo hará;) --- en serio no lo hagasRespuestas:
Si desea eliminar solo directorios (y enlaces simbólicos a directorios), dejando
/config/filegroupsintactos los archivos , puede usar una barra diagonal final:Si desea eliminar directorios con nombres que comienzan también con un
., suponiendo que tenga un bash bastante reciente, debe usar la opción de shell dotglob:fuente
Esto eliminará todos los archivos y directorios
/config/filegroupsincluidos, incluidos los archivos y directorios "ocultos" (nombres que comienzan con.).Si los nombres de archivo o directorio contienen espacios, debe hacerlo así:
Bonificación: primero puede verificar qué se va a eliminar de esta manera:
Si desea mantener ciertos archivos o directorios, puede hacerlo así:
fuente
findla-deleteopción?-deletese niega a eliminar directorios no vacíos.-maxdepthreemplaza-depth, lo cual es necesario-deletepara eliminar directorios no vacíos. Sin-maxdepthusted, no puede ver fácilmente qué directorios se van a eliminar porque también enumera los archivos dentro de los directorios. No usar-maxdepthtambién significa que no puedes usar fácilmente filtros como-name. Además,-deleteelimina los directorios al eliminar primero todos los objetos dentro, lo que puede llevar mucho tiempo si es un árbol grande y profundo.Prefiero usar
findcon-exec, eso haría que tu llamada sea así:fuente
Si ya está en la carpeta, simplemente puede escribir
rm -rf ./**Entonces:
Este es un patrón global para eliminar todas las subcarpetas de la ruta local.
./refiriéndose a la carpeta local ... y**para todas las carpetas debajo ...fuente
rm -rf ./*, excepto que es probable que reciba mensajes de diagnóstico sobre "No-fexiste tal archivo o directorio" si no está utilizando su comando (ya que el directorio superior se eliminaría recursivamente antes de que se procese su contenido) porrm).