Як можна видалити порожні папки в Mac OS X?


Відповіді:


43

Перш за все зауважте, що видаляти порожні каталоги зазвичай не потрібно. Деяким службам чи програмам можуть навіть потрібні певні каталоги. Будьте в курсі того, що ви робите.

Ви можете перелічити порожні папки за допомогою findзапуску з Terminal.app:

find . -type d -empty

За замовчуванням findперераховані файли та папки, але тут -type dобмежується їх у каталогах, а -emptyпараметр показує лише порожні каталоги. Це повторить усі папки, що виходять із вашого домашнього каталогу ( або короткого ). Щоб розширити це на всю вашу файлову систему, використовуйте:/Users/your-username/~

find / -type d -empty

Тут /позначається корінь вашої файлової системи Mac OS X. Звичайно, ви можете також використовувати будь-яку іншу вихідну точку, наприклад ваш зовнішній диск, встановлений під ;/Volumes/your-disk-name

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

Тепер, якщо ви хочете видалити будь-які findрезультати, просто додайте -deleteтак:

find . -type d -empty -delete

Примітка. Це підтвердження не вимагає . Він видалить усі каталоги, які він може, тобто ті, з яких у вас є дозволи на видалення. Їх не перенесуть у смітник, але назавжди зникнуть. Якщо ви хочете, щоб вас запитали перед видаленням, змініть команду на щось подібне:

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

Це дає мені висновок про illegal option -- t typeі, emptyздається, не в змозі розпізнати.
AsTeR

1
@AsTeR Версія OS X findвимагає шляху, тому спробуйте ще раз find . -type d, а не find -type d(остання працює для GNU find).
slhck

6
Хоча це працює, він, ймовірно, не знаходить папки, які містять лише приховані файли .DS_Store, роблячи їх технічно не порожніми, але видаються порожніми для користувача. Якщо користувач хоче знайти всі папки, які здаються порожніми, ті, які він колись відкрив у Finder, не знайдуться таким чином, оскільки Finder додав би файл .DS_Store.
SuperTempel

Тому нам може знадобитися зробити це в два етапи: спочатку видаліть .DS_Store файли (це можна зробити findаналогічним чином, як вище), а потім скористайтеся запропонованою командою для видалення залишків порожніх каталогів.
герлос

6

Я створив невелику та безкоштовну програму, яка вирішує це краще:

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

Перевага цієї програми полягає в тому, що вона також знаходить папки, які, мабуть, порожні, але містять невидимий файл ".DS_Store".

А також дозволяє негайно перемістити знайдені предмети в кошик.


Було б добре, якщо він також може працювати з файлом Icon - superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew

@kenchew Я вважаю, що ви шукаєте саме цьогоfind ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo

2

Щоб продовжити ці зусилля:

Я створив сценарій, який використовую, щоб час від часу очищати папки з документами, оскільки я переживаю за OCD і втомився бути APP Overloaded і як простота.

Я зробив це, намагаючись покращити та запропонувати альтернативне рішення.

Нарешті, для файлу значків @ kenche, схоже, це не існує на моєму комп'ютері, оскільки я не змінив іконки папок, але ви можете в інспекторі. Перетягнувши зображення вгорі зліва, він створить Icon^Mфайл у цій папці.

Щоб знайти їх теж, можете запустити:

(Чи маєте ви бути параноїком, якщо ви знайдете помилковий позитив, тоді використовуйте: ctrl+ v ctrl+ mзамість?

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

ВАЖЛИВО

Будь ласка, як зазначено вище @slhck: Деяким службам або програмам навіть можуть знадобитися певні каталоги. Це стосується також файлів DS_Store & Icon, БУДЬМО в курсі того, що ти робиш. Також зверніть увагу: Цей сценарій не вимагає підтвердження. Він видалить усі каталоги, які він може. тобто ті, де у вас є дозволи на видалення. Їх не перенесуть у смітник, але назавжди зникнуть.

Сценарій БАШ

#!/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;

Кінець сценарію.

Сценарій можна побачити тут, на GitHub

Список літератури:

Про піктограми, що представляють файли на вашому Mac

Будь-який спосіб видалити всі папки, які містять лише .DS_Store рекурсивно?

Знайдіть папки та папки, що містять лише ".DS_Store"

Як знайти всі файли з нульовим байтом у каталозі, включаючи підкаталоги

Ікона? файл на робочому столі OS X

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.