BASH 脚本

BASH 脚本

我想删除外部磁盘上的所有空文件夹。我该怎么做?

答案1

首先请注意,删除空目录通常没有必要。某些服务或应用程序甚至可能需要某些目录存在。请注意您正在做什么。

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

答案2

为了进一步努力:

我创建了一个脚本,用来不时清理我的文档文件夹,因为我有强迫症,厌倦了 APP 超载并且喜欢简单。

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

最后,对于@kenche 的图标文件,由于我没有修改文件夹图标,因此我的 Mac 上似乎不存在该文件,但您可以在检查器中修改。将图片拖到左上角后,它将Icon^M在该目录中创建文件。

要找到这些,您可以运行:

(如果您对发现假阳性感到偏执,那么使用:++ctrl而不是?)v ctrlm

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 -print;
# =============================================================================
# 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 -print;

echo 'Removing ZERO file sized files...'
find ~/Documents -type f -empty -delete -print;
# =============================================================================
# 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 -print;

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

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

脚本结束。

脚本可以在 GitHub 上查看

参考:

关于代表 Mac 上的文件的图标

有什么方法可以递归删除所有仅包含 .DS_Store 的文件夹?

查找仅包含“.DS_Store”的文件夹和子文件夹

如何查找目录(包括子目录)中的所有零字节文件

OS X 桌面上的图标文件

相关内容