Directory

如何通過定位的 PRUNEPATHS 排除帶有空格的目錄?

  • October 17, 2011

我想排除 NTFS 掛載上的某些 Windows 文件夾被locate. 我PRUNEPATHS熟悉/etc/updatedb.conf. 它是一個以空格分隔的目錄名稱列表。

我的問題是我想排除本身包含空格的目錄(例如Program Files (x86))。

我嘗試了反斜杠轉義,但沒有奏效。

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$\)'

引用自:https://unix.stackexchange.com/questions/22752