如何在Mac OS X中删除空文件夹?


Answers:


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似乎无法识别。
2013年

1
@AsTeR的OS X版本find需要一个路径,因此请尝试使用find . -type d,而不是find -type d(后者适用于GNU find)。
slhck

6
在这种情况下,它可能不会找到仅包含隐藏的.DS_Store文件的文件夹,从而使它们在技术上非空,但对用户而言显示为空。如果用户要查找所有显示为空的文件夹,则不会以这种方式找到他曾经在Finder中打开的文件夹,因为Finder会添加.DS_Store文件。
SuperTempel 2014年

因此,我们可能需要分两个步骤进行操作:首先删除.DS_Store文件(可以使用find与上述类似的方法来完成),然后使用建议的命令删除剩余的空目录。
gerlos

6

我制作了一个小型免费程序,可以更好地解决此问题:

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

该程序的优点在于,它还可以查找显然是空的但包含不可见的“ .DS_Store”文件的文件夹。

它还可以让您立即将找到的项目移至“已删除邮件”。


将是一件好事,如果它能够处理的图标文件,以及- superuser.com/questions/298785/icon-file-on-os-x-desktop
kenchew

@kenchew我相信您正在寻找它find ~/Documents -type f -name 'Icon?' -print -delete;
JayRizzo

2

为了进一步努力:

我创建了一个脚本,该脚本用于不时清理我的文档文件夹,因为我很容易使用OCD,并且厌倦了APP重载和简单性。

我这样做是为了改进并提供替代解决方案。

最后,对于@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脚本

#!/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桌面上的文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.