在 Mac 上,从命令行中删除当前文件夹中的.DS _ STORE 文件和所有子文件夹

我明白我可以使用 find . -name ".DS_Store"找到所有的.DS _ Store 文件在当前文件夹和所有子文件夹。但是我怎样才能同时从命令行中删除它们呢?我发现来回切换所有文件夹然后一个一个删除真的很烦人。

142805 次浏览

find可以做到这一点。只要加上 -delete:

find . -name ".DS_Store" -delete

进一步扩展它,还可以打印它们的相对路径

find . -name ".DS_Store" -print -delete

出于额外的谨慎,您可以排除目录并只筛选文件

find . -name ".DS_Store" -type f -delete

还可以使用扩展 globbing (**) :

rm -v **/.DS_Store

在 zsh、 bash 4和类似的 shell 中(如果未启用,则通过: shopt -s globstar激活)。

使用文本编辑器创建一个新文件,复制并粘贴以下文本到其中,然后用“。“ sh”文件扩展名,然后用终端打开该文件。确保文本编辑器实际上保存的是原始文本,而不是将文件保存为 Rich Text Format 文件或其他带有附加信息的文本文件格式。

#!/bin/bash
echo -e "\nDrag a folder here and press the Enter or Return keys to delete all files whose names begin with a dot in its subfolders:\n"
read -p "" FOLDER
echo -e "\nThe following files will be deleted:\n"
find $FOLDER -name ".*"
echo -e "\nDelete these files? (y/n): "
read -p "" DECISION
while true
do
case $DECISION in
[yY]* ) find $FOLDER -name ".*" -delete
echo -e "\nThe files were deleted.\n"
break;;
[nN]* ) echo -e "\nAborting without file deletion.\n"
exit;;
* ) echo -e "\nAborting without file deletion.\n"
exit;;
esac
done
find . -name ".DS_Store" -print -delete

这将删除当前路径中名为 .DS_Store的所有文件,同时显示它们的相对路径

下面是如何递归地删除 .DS_Store文件

打开终端 在命令行中,转到所有文件和文件夹所在的文件夹位置:

cd to/your/directory

最后,输入以下命令:

find . -name '.DS_Store' -type f -delete

按回车键

干杯!

干净利落地做到这一点的最好方法是:

find . -type f \( -name ".DS_Store" -o -name "._.DS_Store" \) -delete -print 2>&1 | grep -v "Permission denied"

这会删除文件,隐藏“权限拒绝”错误(同时保留其他错误) ,打印出删除的文件清单。

这不是问题所在,但是如果你真的想要压缩目录而不需要 .DS_STORE文件,这是一个很好的方法..。

zip -r -X archive_name.zip folder_to_compress

以上所有的答案都是有效的,但是如果一个人在使用 Mac 的同时仍然在使用 Mac,那么还有一个更大的问题。所描述的行 删除除 Finder 会立即再次重新创建它们以外的所有 DS_Store文件,因为这是默认行为。你可以阅读这一切是如何工作的 给你。如果你使用的是 Mac,你应该只有在你真正需要的时候才删除它们:

如果你没有特别的理由删除这些。DS _ Store 文件(窗口共享可能是一个很好的理由) ,最好让它们“保持原样”删除对性能没有好处。存储文件。它们是无害的文件,通常不会引起任何问题。记住。DS _ Store 文件保存您的个性化文件夹设置,如图标排列和列排序。这就是为什么你通常不想删除它们,而是隐藏它们。

如果你真的这样做了,还有一个方法没有在这里提到:

sudo find / -name “.DS_Store” -depth -exec rm {} \;