我想排除 NTFS 安装上的某些 Windows 文件夹被locate
. 我熟悉的PRUNEPATHS
语法/etc/updatedb.conf
。它是一个以空格分隔的目录名称列表。
我的问题是我想排除包含空格本身的目录(例如Program Files (x86)
)。
我试过反斜杠转义,但这没有用。
在updatedb.sh
第 175 行给出了一个提示:
Run Code Online (Sandbox Code Playgroud)PRUNEREGEX=`echo $PRUNEPATHS|sed -e 's,^,\\\(^,' -e 's, ,$\\\)\\\|\\\(^,g' -e 's,$,$\\\),'`
那里$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)