Какой инструмент является наиболее гибким для поиска по всей моей системе, найти или mdfind?
Следите за 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, в котором stat каждого файла в списке и печатает имя самого нового):
Обратите внимание locate.updatedb
Сценарий создания базы данных был изменен, чтобы позволить find искать в /etc/locate.rc
указанный объем (ы) как root
или же nobody
в зависимости от того root
или же daemon
вызывает его в соответствии с тем, какие папки индексируются / покрываются "locate"). Логика хитрая, поэтому вот комментарий для обновленного /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 ответ
Я не смог найти в центре внимания поиска Finder список.bashrc (возможно, он его находит, но не отображает, потому что он невидим?). Но интерфейс командной строки для освещения... ну, его можно убедительно показать. Это работает:
$ mdfind kMDItemFSName = ".bashrc"
/Users/gordon/.bashrc
Но по какой-то причине -name
опция не показывает это:
$ mdfind -name ".bashrc"
$
... так что я не совсем верю в это, чтобы найти то, что я думаю, что должно.