Listar apenas arquivos regulares [duplicados]

2

Desejo listar todos os inodes no diretório atual que são arquivos regulares (ou seja, não diretórios, links ou arquivos especiais), com ls -la ( ll ).

Eu fui ao man ls pesquisando por type e encontrei apenas isso, o que não entendi muito bem a esse respeito:

--indicator-style=WORD

append indicator with style WORD to entry names: none (default), slash (-p), file-type (--file-type), classify (-F)

Como eu poderia listar apenas arquivos regulares com ls -la ( ll como meu atalho no Ubuntu 18.04)?

    
por JohnDoea 06.11.2018 / 06:34

3 respostas

7
find . -maxdepth 1 -type f -ls

Isso lhe daria os arquivos regulares no diretório atual em um formato similar ao que você obteria com ls -lisa (mas mostrando apenas arquivos regulares, graças a -type -f na linha de comando).

Observe que -ls (introduzido pelo BSDs) e -maxdepth (introduzidos pelo GNU find ) são extensões não-padrão (embora agora comuns). POSIXly, você pode escrever:

find . ! -name . -prune -type f -exec ls -ldi {} +

(que também tem a vantagem de classificar a lista de arquivos, embora possivelmente em grandes blocos independentes, se houver um grande número de arquivos no diretório atual).

    
por 06.11.2018 / 07:31
7

ls não tem uma opção para fazer isso e você não deve analisar sua saída para filtrar arquivos comuns.

find pode ser usado para localizar e listar arquivos regulares em vez de ls . Outra opção é usar o Zsh e seus qualificadores glob :

ls -l -- *(D.)

lista todos os arquivos regulares, incluindo aqueles cujo nome começa com um ponto.

    
por 06.11.2018 / 07:16
3

Bem, quando você usa -a, mostra tudo o que está oculto; arquivos e pastas ocultos. Em vez de ls, provavelmente você vai querer usar o comando find. Isso deve ajudar você a começar:

find -type f -exec ls -la {} \;

Você precisará mudar para o diretório que deseja pesquisar primeiro.

    
por 06.11.2018 / 07:07

Tags