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

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

Estou executando um comando find para me mostrar os arquivos de uma extensão específica, como:

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

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

Como isso pode ser feito?

Responder1

GNU findtem uma -lsdiretiva 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 fornecida, é -printsimplesmente imprimir o nome do arquivo e o caminho encontrado. Se você adicionar (ou substituir -printpor) -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 ls -lformato de saída. (Isso usa uma formatação de data diferente; pode ser possível replicar o comportamento de ls lá também; consulte a findpágina de manual 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ê querevitarusando -execse puder, e se precisar usar -exec, vocêquerertentar usar +em vez de {}fornecer vários nomes de arquivo em uma única invocação. Caso contrário, o comando será executado uma vez por arquivo encontrado que corresponda aos critérios, o que com um grande número de arquivos pode representar 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 usar ls em primeiro lugar:ls -ld $directory/*.vm

Responder2

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

find "$directory" -type f -name '*.vm'  -exec ls -l {} \;

informação relacionada