Como remover todos os subdiretórios? (script de shell unix)

Jan 15 2021

Eu tenho um diretório chamado "cdrs-roaming". Todos os dias eu recebo um ou mais arquivos .zip e descompacto-os com isto:

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

Então eu tenho por exemplo: "exemplo1.zip" e "exemplo1"; "exemplo2.zip" e "exemplo2"

Estou removendo todos os arquivos zip (neste caso: "example1.zip" e "example2.zip") com este:

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

Então, eu quero remover os diretórios (ou pastas - eu realmente não sei a diferença) "exemplo1" e "exemplo2". Eu tentei isso:

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

Mas também remove "cdrs-roaming". Também tentei usar:

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

Mas ele retorna: find: '/ cdrs-roaming /': Não existe esse arquivo ou diretório

Alguma ideia para fazer isso? Preciso excluir apenas os diretórios dentro de "cdrs-roaming", mas não consigo remover mais nada dentro dele (meus arquivos .sh estão dentro dele)

Respostas

2 user1934428 Jan 15 2021 at 15:17

Já que você está usando o bash, que tal

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

A barra final garante que o bash apenas expanda o padrão para diretórios.

1 TimurShtatland Jan 15 2021 at 05:27

-mindepth 1Opção de uso :

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