我想排除 NTFS 挂载上的某些 Windows 文件夹被locate
.我熟悉PRUNEPATHS
中的语法/etc/updatedb.conf
。它是一个以空格分隔的目录名称列表。
我的问题是我想排除本身包含空格的目录(例如Program Files (x86)
)。
我尝试过反斜杠转义,但没有用。
答案1
第updatedb.sh
175行给出了提示:
PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
在那里$PRUNEPATHS
像纯文本一样处理,“ ”字符被替换并且不可能转义。
为了确保第 175 行中存在空格,您必须在不明确提及的情况下表示它。我知道的最好的方法是使用\s
,这意味着空白字符:
PRUNEPATHS='/path/to/Program\sFiles\s(x86)'
(这还包括制表符和换行符,但在这种情况下对您来说没问题。)
另一种方法是直接设置$PRUNEREGEX
,如updatedb
第 175 行所示:
PRUNEREGEX='\(^/path/to/Program Files (x86)$\)'
您可以使用 分隔多个路径\|
,因此空间不再是问题:
PRUNEREGEX='\(^/path/to/Program Files (x86)$\)\|\(^/foo/bar$\)'