Удалить папку, если в ней есть другая папка с такими же начальными номерами.

Удалить папку, если в ней есть другая папка с такими же начальными номерами.

У меня есть несколько папок, которые были созданы по ошибке. Я хотел бы удалить эти папки.

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

В этой ситуации я бы хотел удалить 636.emptyи оставить оставшуюся папку пустой.

После того, как я выполнил команду терминала, я хотел бы sisterудалить все папки, входящие в папку.

¬ 636
¬ 637
¬ 638.empty
¬ 639

Удалённые папки будут следующими:

¬ 636.empty
¬ 639.empty

У меня есть несколько 25,000папок, возможно, 1000 некоторые из них дублируют emptyпапку

решение1

Пройтись по всем указанным каталогам *emptyи проверить, существует ли такой же каталог, .emptyи удалить, если это так:

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

Заменить rmdirна rm -rf, если каталог не пуст, несмотря на свое название ;-)


Альтернатива find:

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

Замените -deleteна , -exec rm -rf {} \;если каталог не пустой.

Связанный контент