1

Следите за Spotlight и команда locate не ищет * все * папки:

Шаги, упомянутые Гордоном Дэвиссоном, были выполнены; .bashrc был введен в поле поиска Spotlight, а системные и невидимые файлы были включены согласно приведенной выше ссылке. Файл .bashrc вообще не показывался. Пермь ${HOME} была изменена с 750 на 755 и прошло несколько часов, но .bashrc все еще не появился.

Что требуется для просмотра .bashrc с помощью Spotlight? Как Spotlight может отображать .bashrc повсюду, если вообще позволяет видеть самый последний, как в ?:

me@My-MacBook-Pro ~
$ locate .bashrc | most_recent_file
/Users/me/.bashrc

(most_recent_file - это скрипт на Perl, в котором каждый файл статистики находится в списке и выводит имя самого нового):

Примечание: Сценарий создания базы данных locate.updatedb был изменен , чтобы найти для поиска /etc/locate.rc заданного объема (ы) как root или nobody в зависимости от того , вызывает root или daemon его, как и в какие папки индексируются / покрыты «найти»). Логика хитрая, поэтому вот комментарий для обновленного /usr/libexec/locate.updatedb:

# Modify test for expected invocations by either daemon (id=1) or root (id=0);
# if invoked as root, skip test section and search filesystems as root as per
# /etc/locate.rc, a possible security risk if /etc/locate.rc is not tailored
# for production use.  Invoked as daemon, we "spawn" ourselves as nobody to
# gain nobody's filesystem visability, rather than daemon's.
#if [ "$(id -u)" = "0" ]; then
if [ "$(id -u)" = "1" ]; then

Вот исходный код Perl для скрипта most_recent_file.pl . У нас есть символическая ссылка most_recent_file в наших путях поиска.

#!/usr/bin/perl -wnl
# From pathname inputs, emits name of one most recently modified
# Gives correct answer where pipelines of this form may not:
#   find . -print | xargs ls –lrdt | tail -1

# NOTE: Use find or locate to provide input, or ls -d dir/*,
# but *not* simply "ls dir" (dir won't be present in pathname)

# Sample invocations:
#      locate '*.c' | most_recent_file
#      ls -d /etc/* | most_recent_file
#      find /local -name 'somescript' | most_recent_file
#      most_recent_file < filelist

BEGIN {
    $newest = 0;    # initialize modification-time reference point
    $name   = "";
}

# Get file's numeric modification time; 10th value from stat
$mtime = ( stat $_ )[9];    # indexing into output of stat
if ( $mtime > $newest ) {   # if True, current file is newest yet seen

    # Remember mod-time for comparison to others,
    # and remember filename for final report
    $newest = $mtime;
    $name   = $_;
}

END {
    print $name;
}

1 ответ1

3

Мне также не удалось найти в центре внимания поиска Finder список .bashrc (возможно, он его находит, но не отображает, потому что он невидим?). Но интерфейс командной строки для освещения ... ну, его можно убедительно показать. Это работает:

$ mdfind kMDItemFSName = ".bashrc"
/Users/gordon/.bashrc

Но по какой-то причине опция -name не показывает это:

$ mdfind -name ".bashrc"
$

... так что я не совсем верю в это, чтобы найти то, что я думаю, что должно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .