RogerDez
(usa Outra)
Enviado em 08/04/2020 - 02:53h
Realmente o comando abaixo não faz sentido:
rm -rd /home/usuario/Documentos/*' '*
por que a opção '-d', como você bem mencionou, somente diz que, dentre os diretórios listados, remover somente os que estão vazios..
mas essa opção não proibe o 'rm' de remover arquivos normais ou diretórios com arquivos se eles estiverem listados, especialmente se você usar a opção '-r' junto..
foi mal, esses detalhes do 'rm' causam muita confusão e por isso sempre pode acontecer erros..
então tem que ser aquela segunda opção que eu citei mesmo, acho que é a melhor interface.
outro método menos eficiente seria:
entre no diretório mãe que tem os arquivos, e depois:
for arq in */ ; do
[[ "$arq" = *\ * ]] || continue
rm -r "$arq"
done
usando globs mais uma vez, a estrela com a barra no final '*/' vai listar todas as pastas, especificamente.
depois fazemos um teste em um for-do loop, se no nome da pasta tem um espaço em branco,
aqui o glob do comando test é uma estrela (qualquer caracter), uma barra invertida que meramente vai escapar o espaço, e depois mais uma estrela. mas este glob poderia ser assim tb [[ "$arq" = *' '* ]]
se não tiver um espaço em branco, ele continua o loop com o próximo ítem,
se tiver espaço em branco... remove a pasta e os arquivos recursivamente
testado.