删除 DS_Store 文件和变体?

删除 DS_Store 文件和变体?

我正在运行 Ubuntu 10.04.1 LTS 服务器。我经常使用 Mac 上的 AFP 打开文件。这不可避免地会在服务器上创建 .DS_Store 文件(尽管出于某种原因,它们被命名为:2eDS_Store。但是,它还会在 DS_Store 文件上创建变体。这些变体通常与该目录中的其他文件的名称相似。例如:

~$ ls
total 60K
-rw-r--r--  1 tarakhovsky  16K 2010-11-30 18:28 :2eDS_Store
drwx--S---  4 tarakhovsky 4.0K 2010-11-08 13:58 :2eTemporaryItems/
lrwxrwxrwx  1 tarakhovsky   15 2010-10-19 17:44 bigdisk -> /media/bigdisk//
...
drwxr-xr-x  3 tarakhovsky 4.0K 2010-11-03 18:24 Temporary Items/
drwxr-xr-x  3 tarakhovsky 4.0K 2010-11-30 01:34 tmp/
...

我已使用以下方法禁用 DS_Store 文件的创建:

defaults write com.apple.desktopservices DSDontWriteNetworkStores true

所以希望这种情况不会继续发生——但我真的想摆脱服务器上现有的所有 DS_Store 文件变体。有没有人知道为什么会产生这些变体以及如何摆脱它们?

答案1

:2e 前缀似乎是 netatalk 服务默认设置的副作用,该设置不允许使用点文件;为了避免这种情况(即让文件名在服务器上显示为 .DS_Store 等),请options:usedots在 /etc/netatalk/AppleVolumes.default 中的每个共享中添加(请参阅先前这个问题netatalk 文档)。

这既不会删除现有的“:2e”文件,也不会阻止创建新的“.”文件,只会使新文件以更合理的名称创建(并使它们完全不可见)。DSDontWriteNetworkStores您所做的设置应该可以阻止创建新的 .DS_Store 文件,但不会阻止 .TemporaryItems、.Trashes、._* 文件(这些是包含资源分支和非标准元数据的 AppleDouble 文件)等。我不知道有什么方法可以阻止创建这些文件,您只能事后清理它们(并希望它们中没有任何重要内容——这并不总是一个安全的假设)。

我发现了一个剧本作者:Christian Imhorst删除服务器上的各种文件。他的网站上的字符编码有点乱,所以我将在此处包含一个清理过的(并略作修改……)版本。我在要删除的文件名列表中添加了一些内容;您可以随意编辑删除列表以适应您的需要。但在运行此操作之前,请确保您有备份,因为任何包含字符“rm -rf”的脚本都应被视为潜在危险。

#!/bin/bash
# Script:       sauber
# Object:       Cleans up your Linux file system after a 
#                   session with AppleTalk and Finder.
# Etymologie:   sauber means clean in German
# Author:       originally by Christian Imhorst [http://www.datenteiler.de/what-is-2eds_store/]
#                   modified by Gordon Davisson

# Test number of arguments here
if (( $# < 1 )) ; then
    echo >&2
    echo "We need an argument here." >&2
    echo "Usage:   ./sauber [Directory]" >&2
    echo "Example: ./sauber /home/christian"  >&2
    echo >&2
    exit 1
elif [[ ! -d "$1" ]] ; then
    echo "$1 is not a directory" >&2
    exit 1
fi

find "$1" \( -iname ':2eDS_Store' \
    -o -iname '.DS_Store' \
    -o -iname '.AppleDouble' \
    -o -iname 'Network Trash Folder' \
    -o -iname 'Temporary Items' \
    -o -iname ':2eTemporary Items' \
    -o -iname '.Temporary Items' \
    -o -iname ':2elocalized' \
    -o -iname '.localized' \
    -o -iname ':2e_*' \
    -o -iname '._*' \) -exec rm -rf {} \;

答案2

我知道这是一个非常老的问题 - 但升级到 Lion 后我又遇到了这个问题。我刚刚安装了蓝色丰收这似乎解决了我的问题。它删除了我的 Linux 服务器上不需要的文件。

答案3

这只是猜测,但0x2e是十六进制的 46,也就是 ASCII 中的句点字符.。我假设这些.DS_Store文件被重命名的方式不会与 Linux 命名约定相冲突,即以点开头的任何东西都是隐藏文件。至于什么机制是否确实在这么做,我不知道;但这解释了“2e”。

答案4

:2E 可能是 %2E 的变体,表示每个http://www.w3schools.com/tags/ref_urlencode.asp

相关内容