在没有.DS_Store的Mac上压缩文件夹


63

在Mac上压缩文件夹时,是否还有摆脱.DS_Store的方法?

我在Mac上工作,并以zip格式将工作发送给客户端,但始终在其中的.DS_Store文件夹中提出疑问。除非我在Windows上打开该文件夹,然后删除.DS_Store并将其压缩在那里,否则这似乎是不可避免的。这是一个很大的麻烦。

有没有简单的解决方法?

Answers:


108

如果您不介意跳到终端,那就太简单了。如果您位于中/Users/username,这是您的$ HOME目录,并且有一个名为foo的子目录,您想压缩但忽略所有.DS_Store文件,那么请执行以下操作:

zip -r foo.zip foo -x "*.DS_Store"

为了解释这一点,我们使用以下参数/参数运行zip可执行文件:

  • -r 用于递归地包括我们要压缩的目标下面的所有目录。
  • foo.zip 是我们正在创建的zip归档文件的名称
  • foo 是我们要压缩的目标目录
  • -x "*.DS_Store" 排除路径以字符串“ .DS_Store”结尾的所有文件

不需要愚蠢的第三方应用程序,也根本不需要破坏.DS_Store文件-只需依靠OSX / Darwin中内置的所有unix工具。


1
非常感谢。出于兴趣,我将如何排除多路径结尾?像zip -r foo.zip foo -x“ * .DS_Store,* .svn”之类的东西?
danixd 2010年

5
两次使用-x参数: zip -r foo.zip foo -x *.DS_Store -x *.svn*
whaley 2010年

如何排除OSX为自定义文件夹图标创建的图标文件?它们在文件名的末尾有换行符或类似内容。
丹尼尔·贝克

我不知道这些文件名是什么样子,所以在这里我不能给出任何实际指导。
whaley 2010年

1
@Daniel Beck-因此,请继续使用CleanArchiver,不要在明显适用于原始海报的情况下,劫持其他人的问题的注释部分并接受该解决方案的劣等回答?令人惊讶的是,您的问题的答案是-x 'Icon?'。“?” 文件遍历模式中的字符表示“匹配单个通配符”,因此无论“?”是什么,它都将匹配。真的是。您可以通过附加更多-x参数来排除任何类型的临时文件。 zip非常灵活。您认为这些第三方工具在幕后真正使用了什么?
whaley 2010年

5

您可以创建一个自动应用程序,该应用程序接受一个文件夹作为输入并生成文件夹内容的zip文件,而不会产生任何混乱。

将此应用程序存储在/ Users / you / Applications中,然后将其拖到Finder工具栏中。然后,您可以从任何查找器窗口将文件夹拖到应用程序上。

创建一个自动化应用程序

添加“ 获取选定的查找器项目 ”步骤。并且还添加一个“ 运行外壳脚本 ”步骤,并将“ 传递输入 ”选项设置为“ 作为参数 ”。

添加工作流程步骤

剧本:

name=("$@")
cd "$name"
zipFileName=`basename "$name"`
zip "${zipFileName}.zip" -r ./* \
    -x */.DS_Store \
    -x */.git \
    -x */.svn \
    -x */.idea \
    -X */__MACOSX
mv "${zipFileName}.zip" ../

接受一个文件夹作为输入,并生成一个带有该文件夹名称的zipfile。


这很棒!我如何修改它可以拖动多个文件,输出名称应包含目录名;
18:09的

2
@unbreak我不知道。我不再拥有Mac ;-)
米歇尔·鲁斯

3

我认为默认情况下没有方法可以实现,但是我可以想到两种方法来实现所需的目标。

首先,我找到了一个名为FolderWasher的免费应用。将文件夹拖放到应用程序上,它将删除.DS_Store文件并为您压缩。

或者,(可能比第三方软件更好),您可以在创建后使用Automator清理存档。实际上已经为此创建了一个动作。这仅是一个额外的步骤,您可以将动作拖动到Finder,以便轻松查找。


3

如果您已经创建了zip归档文件(或想要一种简单的方法来删除zip创建后的.DS_Store),这将删除zip归档文件中任意路径下的所有.DS_Store文件:

zip -d archive.zip "*/*.DS_Store"

whaley的答案仍然绝对是最好的,因为它可以被混淆和遗忘。就我而言,我是从Archive Utility创建的zip,然后意识到我应该删除它们。


2

打开终端(/Applications/Utilies/Terminal.app)并运行以下命令以显示隐藏文件:

defaults write com.apple.finder AppleShowAllFiles TRUE && killall Finder

要隐藏隐藏的文件,只需运行:

defaults write com.apple.finder AppleShowAllFiles FALSE && killall Finder

您可以像删除其他文件一样删除.DS_Store文件,而不会损坏目录。如Wikipedia所述,“ DS_Store(桌面服务商店)是由Apple Inc.的Mac OS X操作系统创建的隐藏文件,用于存储文件夹的自定义属性,例如图标的位置或背景图片的选择。”



2

如果您在终端中运行此命令,这会阻止它们在创建文件夹时自动生成,您可以根据需要将其重新打开。

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

然后,您可以使用@Penang示例(上文)来验证是否不再创建文件。我必须上传一个zip文件,每个文件夹中都包含该文件,这对我有所帮助。


0

在所有位置的Adobe帮助站点上都有关于它们是什么以及如何删除它们的说明。

它们是一个隐藏的文件,用于存储文件夹的配置(如图标位置,颜色,文件夹背景和滚动位置。不幸的是,似乎没有办法阻止它们永久创建,尽管苹果承认它们可能会引起问题。一些用户。

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.