我正在运行 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