Qual ferramenta é mais flexível para pesquisar todo o meu sistema, localizar ou mdfind?

1

Seguir para Spotlight e o comando locate don ' t pesquisar * todas as pastas :

As etapas mencionadas por Gordon Davisson foram realizadas; .bashrc foi inserido no campo de pesquisa do Spotlight e os arquivos System e Invisible foram ativados de acordo com a referência acima. O arquivo .bashrc não apareceu. Os ${HOME} perm foram alterados de 750 para 755 e várias horas passaram, mas .bashrc ainda não apareceu.

O que é necessário para ver .bashrc com o Spotlight? Como o Spotlight pode exibir .bashrc em todos os lugares, se quiser, para ver o mais recente, como em?:

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

( most_recent_file é um script Perl que informa cada arquivo em uma lista e imprime o nome do mais novo):

Observação: o script de criação do banco de dados locate.updatedb foi alterado para permitir que o Localizar pesquise o /etc/locate.rc de volume (s) especificado (s) como root ou nobody , dependendo se root ou daemon o invoca de acordo com Quais pastas são indexadas / cobertas por 'locate' ). A lógica é complicada, então aqui está o comentário para a atualização /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

Aqui está a fonte Perl para o script most_recent_file.pl . Temos um link simbólico most_recent_file em nossos caminhos de pesquisa.

#!/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;
}
    
por Billy McCloskey 26.12.2013 / 18:05

1 resposta

2

Eu não consegui obter a pesquisa de holofotes do Finder para listar o .bashrc (talvez ele esteja encontrando, mas não sendo exibido porque é invisível?). Mas a interface de linha de comando para destacar ... bem, pode ser convencido a mostrá-lo. Isso funciona:

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

Mas, por algum motivo, a opção -name não mostra:

$ mdfind -name ".bashrc"
$

... então eu não confio completamente nisso para encontrar o que eu acho que deveria.

    
por 26.12.2013 / 20:06