linux: como mostrar permissão de arquivos (como ls -l) em arquivos retornados pelo comando find

1

Estou fazendo um comando de localização para mostrar os arquivos de uma extensão específica, como:

find $directory -type f -name "*.vm"

no entanto, eu gostaria de poder ver as permissões do arquivo também (como ls -l shows).

Como isso pode ser feito?

    
por umair 02.09.2014 / 11:44

2 respostas

2

O GNU find tem uma diretiva -ls que você pode usar. Ele tem um formato de saída bastante próximo, mas não exatamente igual ao de ls -l .

A ação padrão de find, se nenhuma for dada, é -print , que simplesmente imprime o nome do arquivo e o caminho como encontrado. Se você adicionar (ou substituir -print por) -ls , obterá uma listagem mais detalhada.

Se você quiser algum formato específico por qualquer motivo, -printf é o que você deseja. Por exemplo, tente isto:

find . -printf "%M %n %8.8u %8.8g %8.8s %Ax %AX %p\n"

para replicar aproximadamente o formato de saída ls -l . (Isso usa uma formatação de data diferente; também é possível replicar o comportamento de ls; consulte a página find man para obter detalhes sobre os especificadores de formatação disponíveis e printf(3) para obter detalhes sobre o que os números fazem.)

Geralmente, você deve evitar usar -exec , se puder, e se precisar usar -exec, deseja tentar usar + em vez disso que {} para fornecer vários nomes de arquivos em uma única chamada. Caso contrário, o comando será executado uma vez por arquivo encontrado, correspondendo aos critérios, o que, com um grande número de arquivos, pode resultar em uma penalidade substancial no desempenho.

Observe também que, se você não precisa do comportamento de recursão, a solução mais simples pode ser apenas usar o ls em primeiro lugar: ls -ld $directory/*.vm

    
por 02.09.2014 / 11:48
1

Você pode especificar a opção -ls para find . Ou, se você precisar de um formato específico, use -exec :

find "$directory" -type f -name '*.vm'  -exec ls -l {} \;
    
por 02.09.2014 / 11:47