¿Cómo eliminar todos los subdirectorios? (secuencia de comandos de shell de Unix)

Jan 15 2021

Tengo un directorio llamado "cdrs-roaming". Todos los días recibo uno o más archivos .zip y los descomprimo con esto:

#!/bin/bash
for i in *.zip
do
    j=${i//\.zip/} mkdir $j
    cd $j unzip ../$i
    cd -
done 

Entonces tengo, por ejemplo: "example1.zip" y "example1"; "ejemplo2.zip" y "ejemplo2"

Estoy eliminando todos los archivos zip (en este caso: "example1.zip" y "example2.zip") con esto:

#! /bin/bash
find /dados/cdrs-roaming/*.zip -mtime +1 -exec rm {} \;

Así que quiero eliminar los directorios (o carpetas, realmente no sé la diferencia) "ejemplo1" y "ejemplo2". He probado esto:

#! /bin/bash
find /dados/cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

Pero también elimina "cdrs-roaming". También intenté usar:

find /cdrs-roaming/ -type d -mtime +1 -exec rm -rf {} \;

Pero devuelve: find: '/ cdrs-roaming /': No existe tal archivo o directorio

¿Alguna idea para hacer esto? Necesito eliminar solo los directorios dentro de "cdrs-roaming" pero no puedo eliminar nada más dentro de él (mis archivos .sh están dentro de él)

Respuestas

2 user1934428 Jan 15 2021 at 15:17

Ya que está usando bash, ¿qué tal

rm -rf /dados/cdrs-roaming/*/

La barra final asegura que bash solo expanda el patrón a los directorios.

1 TimurShtatland Jan 15 2021 at 05:27

-mindepth 1Opción de uso :

find /dados/cdrs-roaming/ -mindepth 1 -type d -mtime +1 -exec rm -rf {} \;