Eliminar carpeta si tiene otra carpeta con los mismos números iniciados

Eliminar carpeta si tiene otra carpeta con los mismos números iniciados

Tengo algunas carpetas que se crearon por error. Me gustaría eliminar estas carpetas.

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

En esta situación, me gustaría eliminar 636.emptyy dejar la carpeta restante que no esté vacía.

Después de haber ejecutado el comando de terminal, me gustaría que sisterse eliminen todas las carpetas de una carpeta.

¬ 636
¬ 637
¬ 638.empty
¬ 639

Las carpetas eliminadas serían:

¬ 636.empty
¬ 639.empty

Tengo algunas 25,000carpetas, tal vez 1000 algunas de estas estén duplicadas con la emptycarpeta.

Respuesta1

Recorra todos los directorios nombrados *emptyy verifique si el mismo directorio .emptyexiste y elimínelo si es verdadero:

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

Reemplace rmdircon rm -rfsi el directorio no está vacío a pesar de su nombre ;-)


Una findalternativa:

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

Reemplace -deletecon -exec rm -rf {} \;si el directorio no está vacío.

información relacionada