Como posso fazer ls exibir apenas arquivos?

24

Eu acho que deve haver uma maneira de fazer ls exibir apenas não diretórios, mas a página de manual não torna óbvio

thinkinbinary
fonte
Não tenho certeza ls, mas você pode facilmente fazê-lo com o filecomando: file /directory/containing/the/files -maxdepth 1 -not -type d.
Henning Kockerbeck 11/08/16
1
Outra maneira seria filtrar a saída de lspassagem grep, algo assim ls -1F /directory/containing/the/files | grep -vE /$. Mas lembre-se de que analisar a saída de ls pode ser complicado .
Henning Kockerbeck 11/08

Respostas:

37
ls -p | grep -v /

O uso de ls -ptell lspara anexar uma barra às entradas que são um diretório e o uso de grep -v /tell greppara retornar apenas linhas que não contêm uma barra.

thomasrutter
fonte
Eu verifiquei este porque é a minha resposta favorita (enquanto eu fiz upvote todos eles), mas agora a tentar encontrar uma maneira de colocá-lo em colunas e inverter a ordem de saída ...
thinksinbinary
"Você pode usar 1 opção para lista de colunas únicas" desculpe, eu tentei descobrir o que você quis dizer com isso, eu apreciaria e exemplo / explicação, se você souber, só sei o que é uma opção em relação à programação C
thinkinbinary
@sdkks Você não precisa do 1switch ao canalizar a saída, pois o padrão será a coluna única nessa situação. Se é isso que você estava querendo dizer.
precisa saber é o seguinte
@thinksinbinary não tem certeza de como criar várias colunas, mas você pode procurar ou fazer sua própria pergunta em separado e alguém saberá.
thomasrutter
7

Você pode tentar o seguinte:

find . -maxdepth 1 -not -type d

E mapeie isso para um alias especial.

Mas se você está realmente interessado em usar o lscomando, aqui:

ls -p | egrep -v /$

theabhinavdas
fonte
6

Alternativamente:

ls -lAh | grep -v '^d'

Este método lista em

  • -l Formato de lista longa
  • -A Exibe quase tudo (mostra arquivos ocultos, mas não mostra .e ..)
  • -h Tamanhos de arquivos legíveis por humanos

enquanto grep

  • -v Não mostrar registros correspondentes
  • Regular expressionfilter ^d- começa com a letra d (para diretório), isto é,drwxrwxr-x <some file details> <foldername>

Se você não quiser digitar todas as vezes, poderá transformá-lo em um alias para o seu perfil bash / shell.

sdkks
fonte
2

Vi no seu comentário (@thinksinbinary) a resposta de @thomasrutter, que você queria imprimi-los em ordem inversa e em colunas. Você provavelmente já descobriu ou seguiu em frente, mas aqui está:

ls -pr | grep -v / | column
  • -p adiciona a barra ('/') aos nomes de diretório
  • -r reverte a ordem de saída
  • -v permite ao grep fazer uma pesquisa inversa para imprimir tudo, exceto os diretórios ( tudo o que não tem o '/' que -p coloca lá )
  • " coluna coloca em colunas" - Capitão Óbvio
Levi Uzodike
fonte
1
Eu acho legal que no fórum do ubuntu as pessoas ainda comentem e leiam suas postagens depois de um longo tempo. Eu estava querendo voltar ao linux para aprender a montagem e sistemas operacionais, pois fazê-lo no Windows é muito mais difícil. Obrigado!
thinkinbinary 30/10
0
ls -F | grep -v /

O comando acima exibe arquivos, mas inclui links simbólicos, tubulações etc. Se você também deseja eliminá-los, pode usar um dos sinalizadores mencionados abaixo.

ls -Fanexa símbolos aos nomes de arquivos. Esses símbolos mostram informações úteis sobre arquivos.

ls -F | grep -Ev '/|@|*|=|>|\|'

O comando acima exibe apenas arquivos.

BarathVutukuri
fonte