Remover pasta se houver outra pasta com os mesmos números iniciados

Remover pasta se houver outra pasta com os mesmos números iniciados

Tenho algumas pastas que foram criadas por engano. Eu gostaria de remover essas pastas.

¬ 636
¬ 636.empty
¬ 637
¬ 638.empty
¬ 639
¬ 639.empty

Nesta situação eu gostaria de remover 636.emptye deixar a pasta vazia restante.

Depois de executar o comando do terminal, gostaria que todas as pastas de uma sisterpasta fossem removidas.

¬ 636
¬ 637
¬ 638.empty
¬ 639

As pastas removidas seriam:

¬ 636.empty
¬ 639.empty

Eu tenho algumas 25,000pastas, talvez 1000 elas sejam duplicadas da emptypasta

Responder1

Faça um loop por todos os diretórios nomeados *emptye verifique se o mesmo diretório .emptyexiste e exclua se for verdade:

for d in *.empty; do
    [ -d "$d" ] && [ -d "${d%.empty}" ] && rmdir "$d"
done

Substitua rmdirpor rm -rfse o diretório não estiver vazio apesar do nome ;-)


Uma findalternativa:

find -maxdepth 1 -type d -name '*.empty' \
  -exec sh -c '[ -d "${1%.empty}" ]' find-sh {} \; \
  -delete

Substitua -deletepor -exec rm -rf {} \;se o diretório não estiver vazio.

informação relacionada