Como você obtém detalhes da saída do comando locate?

6

Quando executo o comando ls -l , recebo detalhes sobre os arquivos no diretório atual, como permissões, proprietário, grupo, tamanho do arquivo.

Existe uma maneira de obter esses mesmos detalhes em vez de apenas a localização do arquivo quando eu executar locate ?

    
por user784637 28.12.2011 / 19:02

3 respostas

5

O banco de dados locate não contém informações que sejam nomes, portanto, você deve executar outra ferramenta, como ls , em locate output

lsloc() {
  locate "$@" | 
    while read -r name; do
      ls -ld "$name"
    done
}
lsloc pattern
    
por enzotib 28.12.2011 / 19:35
5

Canalize a saída de locate para xargs (adicionando ls -l como parâmetros a xargs ). Isso permite usar qualquer opção que você precisar com um dos comandos. Ao também passar a opção -0 (dash-zero) para ambos os comandos, você também protege contra interpretações não intencionais de espaços em branco ou de novas linhas em nomes de arquivos. Por exemplo, para obter os detalhes de todos os arquivos .iso no meu sistema:

locate -0 -r '.*.iso$' | xargs -0 ls -l
    
por Mark.Workman 04.02.2012 / 23:03
3

Use um subshell

ls -l "'locate -b 'search_pattern''"

Ou

ls -lh "$(locate -b 'search_pattern')"

Você pode adicionar uma função a ~ / .bashrc se desejar

function lsloc () { ls -l "$(locate -b "") ;}

Você então

lsloc "search pattern"
    
por Panther 28.12.2011 / 19:14