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


82

我明白我可以使用find . -name ".DS_Store"发现所有的.DS_Store文件 在当前文件夹和所有子文件夹。但是,如何才能同时从命令行删除它们呢?我发现来回切换到所有文件夹并一一删除它确实很烦人。

Answers:


178

find可以做到的。只需添加-delete

find . -name ".DS_Store" -delete

3
您需要将文件名大小写固定为“ .DS_Store”,如果使用“ .DS_STORE”,它将不起作用,因为文件名区分大小写。
Amr Lotfy

1
@AmrLotfy事实并非如此,默认的mac文件系统不区分大小写
其他

10
为了格外小心,我通常会排除以下目录:find . -name '.DS_Store' -type f -delete
xApple

我会将此行添加到我的.bashrc_profile中,以在每次启动shell时清理文件。如何减少冗长或完全安静?
Danijel

通常,@ Danijel可以附加2>/dev/null 1>/dev/null到unix命令以使其安静。
Samy Bencherif

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

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


3
@kelin呃,当没有链接时,这是一个仅链接的答案吗?
pppery

1
@ppperry,这是来自评论的自动消息。我投票删除了您的答案,因为与接受的答案相比,它没有添加任何重要的内容。
凯林

3

干净地做到这一点的最佳方法是使用:

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

这将删除文件,隐藏“权限被拒绝”错误(同时保留其他错误),并打印出干净的已删除文件列表。


2

您还可以使用扩展的globlob(**):

rm -v **/.DS_Store

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


1

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

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

1

这是如何递归删除.DS_Store文件的方法

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

最后,输入以下命令:-find。-名称'.DS_Store'-类型f-删除

按Enter

干杯!!


0

这不完全是问题,但是如果您实际上想在没有.DS_STORE文件的情况下压缩目录,则可以使用...

zip -r -X archive_name.zip folder_to_compress
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.