如何通过定位的 PRUNEPATHS 排除带有空格的目录?

mal*_*ana 8 directory locate

我想排除 NTFS 安装上的某些 Windows 文件夹被locate. 我熟悉的PRUNEPATHS语法/etc/updatedb.conf。它是一个以空格分隔的目录名称列表。

我的问题是我想排除包含空格本身的目录(例如Program Files (x86))。

我试过反斜杠转义,但这没有用。

man*_*ork 5

updatedb.sh第 175 行给出了一个提示:

PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
Run Code Online (Sandbox Code Playgroud)

那里$PRUNEPATHS像纯文本一样处理,替换 ' ' 字符并且无法转义。

为确保该空间在第 175 行之后继续存在,您必须在不明确提及的情况下对其进行表示。我所知道的最好的方法是使用\s,这意味着一个空格字符:

PRUNEPATHS='/path/to/Program\sFiles\s(x86)'
Run Code Online (Sandbox Code Playgroud)

(这也将包括制表符和换行符,但在这种情况下对您来说没问题。)

另一种方法是$PRUNEREGEX直接设置,就像updatedb在第 175 行中所做的那样:

PRUNEREGEX='\(^/path/to/Program Files (x86)$\)'
Run Code Online (Sandbox Code Playgroud)

在那里你用 分隔多条路径\|,所以空间不再是问题:

PRUNEREGEX='\(^/path/to/Program Files (x86)$\)\|\(^/foo/bar$\)'
Run Code Online (Sandbox Code Playgroud)