Necesito eliminar una serie de carpetas en Linux según el nombre de una subcarpeta.
/tmp/23245/Default
/tmp/34534/Default
/tmp/45435/Default
/tmp/65464/Main
Quiero eliminar todas las carpetas de /tmp que contienen una subcarpeta de /Default
estas carpetas
/tmp/23245/
/tmp/34534/
/tmp/45435/
Puedo encontrar los archivos usando: find /tmp/*/Default
Pero a partir de ese resultado, ¿cómo puedo obtener el nombre de la carpeta /tmp/Foldername para canalizarlo al rm -rf?
Respuesta1
Puedes probar lo siguiente usando buscar:
find /tmp -mindepth 2 -maxdepth 2 -name "*Default*" -type d -printf "%h\n" | xargs rm -R
Utilice min Depth y max Depth para asegurarse de que estamos analizando directorios 2 niveles por debajo de /tmp y luego use %h para imprimir solo los directorios principales. Canalice la salida a xargs rm -R para eliminar los directorios principales.
Respuesta2
Hay dirname
en GNU coreutils:
for i in /tmp/*/Default; do
rm -R "$(dirname "$i")";
done
find
Quizás también haya un enfoque. No estoy familiarizado con él, así que se lo dejo a usted y/o a los demás.
EDITAR: Quizás incluso rm -R "$(dirname /tmp/*/Default)"
funcionaría
Respuesta3
¿Has probado rm -d dirname
con un *
?
rm -d /tmp/*/Default
Acabo de salir de este sitio:https://linuxize.com/post/rm-command-in-linux/