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

时间:2015-05-27 13:17:45

标签: linux macos command-line

我知道我可以在当前文件夹和所有子文件夹中使用find . -name ".DS_STORE"find all the .DS_STORE files。但是如何同时从命令行中删除它们呢?我发现来回切换到所有文件夹并逐个删除它真的很烦人。

感谢您的任何建议。

6 个答案:

答案 0 :(得分:71)

find可以做到这一点。只需添加-delete

即可
find . -name ".DS_Store" -delete

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

您还可以使用扩展通配(**):

rm -v **/.DS_Store

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

答案 3 :(得分:0)

使用文本编辑器创建一个新文件,将以下文本复制并粘贴到其中,然后使用“.sh”文件扩展名保存,然后使用“终端”打开该文件。确保文本编辑器实际上是保存原始文本,而不是将文件保存为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

答案 4 :(得分:0)

以下是递归删除.DS_Store文件的方法

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

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

按Enter

干杯!

答案 5 :(得分:0)

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

zip -r -X archive_name.zip folder_to_compress