Jak mogę usunąć puste foldery w Mac OS X?


Odpowiedzi:


43

Przede wszystkim zauważ, że usuwanie pustych katalogów zwykle nie jest konieczne. Niektóre usługi lub aplikacje mogą nawet wymagać istnienia pewnych katalogów. Uważaj na to, co robisz.

Możesz wyświetlić listę pustych folderów findprzy uruchomieniu z Terminal.app:

find . -type d -empty

Domyślnie findwyświetla listę plików i folderów, ale tutaj -type dogranicza je do katalogów, a -emptyopcja pokazuje tylko puste katalogi. Spowoduje to rekurencję wszystkich folderów malejących z katalogu domowego ( lub krótkich ). Aby rozwinąć to do całego systemu plików, użyj:/Users/your-username/~

find / -type d -empty

Tutaj /oznacza katalog główny systemu plików Mac OS X. Możesz oczywiście użyć dowolnego innego punktu początkowego, na przykład dysku zewnętrznego zamontowanego pod ;/Volumes/your-disk-name

find /Volumes/your-disk-name -type d -empty

Teraz, jeśli chcesz usunąć dowolne dane findwyjściowe, po prostu dołącz -delete:

find . -type d -empty -delete

Uwaga: nie poprosi o potwierdzenie . Spowoduje to usunięcie wszystkich katalogów, które można, tj. Tych, w których masz uprawnienia do usunięcia. Nie zostaną przeniesieni do kosza, ale znikną na zawsze. Jeśli chcesz zostać zapytany przed usunięciem, zmień polecenie na coś takiego:

find . -type d -empty -exec rm -ri '{}' \;

Daje mi wyniki illegal option -- t typei emptywydaje się, że nie jestem w stanie rozpoznać.
AsTeR

1
@AsTeR Wersja OS X findwymaga ścieżki, więc spróbuj ponownie find . -type d, a nie find -type d(ta ostatnia działa dla GNU find).
slhck

6
Chociaż to działa, prawdopodobnie nie lokalizuje folderów, które zawierają tylko ukryte pliki .DS_Store, co czyni je technicznie niepustymi, ale wydają się puste dla użytkownika. Jeśli użytkownik chce znaleźć wszystkie foldery, które wydają się puste, te, które kiedyś otworzył w Finderze, nie zostaną znalezione w ten sposób, ponieważ Finder dodałby plik .DS_Store.
SuperTempel,

Być może będziemy musieli to zrobić w dwóch krokach: najpierw usuń pliki .DS_Store (można to zrobić findw podobny sposób jak powyżej), a następnie użyj sugerowanego polecenia, aby usunąć pozostałe puste katalogi.
gerlos

6

Stworzyłem mały i darmowy program, który rozwiązuje to lepiej:

http://www.macupdate.com/app/mac/52551/find-empty-folders

Zaletą tego programu jest to, że znajduje również foldery, które są najwyraźniej puste, ale zawierają niewidoczny plik „.DS_Store”.

Pozwala także od razu przenieść znalezione przedmioty do Kosza.


Byłoby dobrze, gdyby mógł również obsługiwać plik ikony - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew

@kenchew Uważam, że tego szukaszfind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo

2

Aby kontynuować ten wysiłek:

Stworzyłem skrypt, którego od czasu do czasu używam do czyszczenia folderu dokumentów, ponieważ jestem już na drodze do OCD i mam dość przeciążania aplikacji i lubię prostotę.

Zrobiłem to w celu ulepszenia i zapewnienia alternatywnego rozwiązania.

Na koniec, w przypadku pliku ikon @ kenche, plik ten nie wydaje się istnieć na moim komputerze Mac, ponieważ nie zmodyfikowałem ikon folderów, ale możesz to zrobić w Inspektorze. Po przeciągnięciu obrazu w lewym górnym rogu utworzy Icon^Mplik w tym katalogu.

Aby je znaleźć, możesz uruchomić:

(Czy powinieneś być paranoikiem, jeśli znajdziesz fałszywie dodatni, użyj: ctrl+ v ctrl+ mzamiast?)

find ~/Documents -type f -name 'Icon?' -print;
# and to remove 
find ~/Documents -type f -name 'Icon?' -print -delete;

WAŻNY

Proszę, jak podano powyżej @slhck: Niektóre usługi lub aplikacje mogą nawet wymagać istnienia pewnych katalogów. Dotyczy to również plików DS_Store & Icon, PROSZĘ Bądź świadomy tego, co robisz. Uwaga: ten skrypt nie prosi o potwierdzenie. Spowoduje to usunięcie wszystkich katalogów, które można. tzn. te, w których masz uprawnienia do usunięcia. Nie zostaną przeniesieni do kosza, ale znikną na zawsze.

Skrypt BASH

#!/bin/bash
# =============================================================================
# MAC OSX HIGH SIERRA 10.13.4 (17E199)
# Terminal: Version: 2.8.2 64-Bit (Intel): Yes
# Terminal Location: /Applications/Utilities/Terminal.app
# =============================================================================
# Terminal CLEAN UP YOUR DOCUMENTS FOLDER.
# =============================================================================
# START WHAT IS BELIEVED TO BE EMPTY NOW.
# =============================================================================
echo 'Searching Documents for empty folders...'
find ~/Documents -type d -empty;
# =============================================================================
# SHOW & THEN REMOVE ALL MAC OS DS_Store FILES
# =============================================================================

echo 'Searching Documents for DS_Store files...'
find ~/Documents -type f -name ".DS_Store" -print;

echo 'Removing DS_Store files...'
find ~/Documents -type f -name ".DS_Store" -print -delete;
# =============================================================================
# SHOW & THEN REMOVE ALL MAC OS ZERO SIZED FILES
# =============================================================================
echo 'Searching Documents for ZERO file sized files...'
find ~/Documents -type f -empty;

echo 'Removing ZERO file sized files...'
find ~/Documents -type f -empty -delete;
# =============================================================================
# SHOW & THEN REMOVE Icon^M FILES
# USE THE ? MARK FOR EASE OF USE YOU CAN ALSO SUB 'CTRL + V & CTRL + M' FOR ^M 
# =============================================================================

echo 'Searching Documents for Icon files...'
find ~/Documents -type f -name 'Icon?' -print;

echo 'Removing Icon files from Documents...'
find ~/Documents -type f -name 'Icon?' -print -delete;

# SEEMINGLY THE SAME AS
# find ~/Documents -type f -size 0 -print
# find ~/Documents -type f -size 0 -print -delete
# =============================================================================
# SHOWCASE NEW FOUND EMPTY FOLDERS
# =============================================================================
echo 'Showcasing new result of existing and new found empty folders...'
find ~/Documents -type d -empty;

echo 'Deleting result of empty folders...'
find ~/Documents -type d -empty -delete;

echo 'Showcasing the removal of said, 'empty folders'...'
find ~/Documents -type d -empty;

Koniec skryptu.

Skrypt można zobaczyć tutaj na GitHub

Bibliografia:

Informacje o ikonach reprezentujących pliki na komputerze Mac

Jakikolwiek sposób, aby usunąć wszystkie foldery, które zawierają tylko .DS_Store rekurencyjnie?

Znajdź foldery i podfoldery zawierające tylko „.DS_Store”

Jak znaleźć wszystkie pliki zero-bajtowe w katalogu, w tym w podkatalogach

Ikona? plik na pulpicie OS X.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.