Ordner entfernen, wenn er einen anderen Ordner mit den gleichen Anfangsnummern enthält

Ordner entfernen, wenn er einen anderen Ordner mit den gleichen Anfangsnummern enthält

Ich habe einige Ordner, die irrtümlicherweise erstellt wurden. Ich möchte diese Ordner entfernen.

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

In dieser Situation möchte ich 636.emptyden verbleibenden, nicht leeren Ordner entfernen und belassen.

Nachdem ich den Terminalbefehl ausgeführt habe, möchte ich, dass alle Ordner, die sich in einem sisterOrdner befinden, entfernt werden.

¬ 636
¬ 637
¬ 638.empty
¬ 639

Entfernte Ordner wären:

¬ 636.empty
¬ 639.empty

Ich habe einige 25,000Ordner, 1000 von denen es sich möglicherweise um Duplikate mit dem emptyOrdner handelt

Antwort1

Durchlaufen Sie alle genannten Verzeichnisse *emptyund prüfen Sie, ob das gleiche Verzeichnis ohne dasselbe .emptyvorhanden ist. Löschen Sie es, wenn dies zutrifft:

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

Ersetzen rmdirdurch rm -rf, wenn das Verzeichnis trotz seines Namens nicht leer ist ;-)


Eine findAlternative:

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

Ersetzen Sie -deletees durch -exec rm -rf {} \;, wenn das Verzeichnis nicht leer ist.

verwandte Informationen