19

Я хотел бы удалить все пустые папки на внешнем диске. Как я могу это сделать?

3 ответа3

36

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

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

find . -type d -empty

По умолчанию find выводит список файлов и папок, но здесь -type d ограничивает его каталогами, а опция -empty показывает только пустые каталоги. Это будет возвращать все папки, исходящие из вашего домашнего каталога (/Users/your-username/ или short, ~). Чтобы расширить это на всю вашу файловую систему, используйте:

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 '{}' \;
5

Я сделал небольшую бесплатную программу, которая решает эту проблему лучше:

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

Преимущество этой программы в том, что она также находит папки, которые, по-видимому, пусты, но содержат невидимые ".DS_Store "файл.

И это также позволяет вам сразу же перемещать найденные предметы в корзину.

1

Чтобы продвинуть это усилие:

Я создал сценарий, который время от времени использую для очистки папки с документами, так как я слишком занят в OCD и устал от перегруженности приложения и простоты.

Я сделал это, чтобы улучшить и предложить альтернативное решение.

И, наконец, для файла значков @ kenche, который, кажется, не существует на моем Mac, так как я не изменил значки папок, но вы можете это сделать в инспекторе. После перетаскивания изображения в верхний левый угол он создаст файл 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, ПОЖАЛУЙСТА, будьте в курсе того, что вы делаете. Также обратите внимание: этот скрипт не будет запрашивать подтверждение. Это удалит все каталоги, которые это может. то есть те, где у вас есть разрешения на удаление. Они не будут перемещены в мусорное ведро, но ушли навсегда.

BASH Script

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .