Intereting Posts
В каком файле Chromium хранит данные хранения сеанса веб-сайта HTML5 конвертировать в эпоху и обратно убить / остановить все процессы Google Chrome Как я могу ограничить количество ядер процессора, которые пользователь может использовать в любой момент в Linux? Linux общий FTP: нельзя удалять один файл Новый массив md является автоматическим чтением и имеет resync = PENDING в bash, читать после того, как труба не устанавливает значения Запускать программу автозапуска в терминале вместо того, чтобы она запускалась скрытой в фоновом режиме lvmcache / dm-cache и отбрасывает на ядре Linux 4.7.x Как установить CUDA на Debian 9 (Stretch) без перерыва в системе? Каковы основные различия между $ ENV_VAR и `env_var`? Как я могу удалить слово назад в командной строке (bash и zsh)? Как экспортировать переменную из Perl-скрипта в сценарий оболочки? Установка типа файла vim с помощью модели не работает должным образом Как синхронизировать двунаправленные 2 папки между Synology Nas и компьютером Debian?

Как исключить каталоги с пробелами через PRUNEPATHS локатора?

Я хотел бы исключить некоторые папки Windows на жестком диске NTFS из индексации путем locate . Я знаком с синтаксисом /etc/updatedb.conf в /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$\)'