Como obter uma listagem de diretório linux para arquivos começando com uma determinada letra que não desce em subdiretórios?


17

Suponha que você esteja em um diretório que contém muitos arquivos e muitos subdiretórios.

Você deseja obter uma lista de diretórios de todos os arquivos que começam com a letra "d". Você digita

ls d*

e o que você recupera são principalmente arquivos em subdiretórios (em particular, arquivos em subdiretórios que começam com "d").

Como você lista apenas os arquivos e nomes de diretório em seu diretório atual?

Respostas:


31

Ah, eu encontrei na sexta leitura da página de manual. É o parâmetro "diretório" não tão sensato

ls -d d* 

6
Você levou apenas 29 segundos para reler a página de manual e escrever esta resposta? Isso é rápida :-)
balpha

1
Além disso, ls -dd * / mostrará apenas os diretórios.
InnaM 19/08/09

6
balpha - Eu o descobri antes de enviar a pergunta e percebi que, se demorasse tanto tempo para descobrir isso, eu também poderia ajudar um pesquisador futuro a postar o q e um aqui.
dggoldst

3
Justo; não há nada errado com isso.
balpha

1
E, no entanto, CppLearner, ele realmente funciona. Tente.
dggoldst

10

Eu acredito que outra solução interessante seja,

ls | grep ^d

Oferece a flexibilidade de expressões regulares.


3
E a complexidade das expressões regulares! ;-)
Chris Nava

1
Esse é um problema interessante, e eu gosto da ideia de usar regexs, no entanto, se você adicionar parâmetros adicionais ao ls, ele será quebrado. Por exemplo, "ls -l | grep ^ d"
dggoldst 20/08/09

Verdadeiro, mas nem todos os parâmetros. ls -a grep "^ \." imprimiria todos os arquivos "ocultos".
Kuer

outros ls flagsnão funcionam ao usar essa abordagem. por exemplo ls -ltr | grep ^d, não funciona. enquanto o sugerido na resposta @dggoldst sim.
hitesh israni

3

encontrar . -maxdepth 1 -name d * -type f

Ok, usar find aqui é um pouco exagerado. Apenas um pouco.


1
Mas isso me ajudou a listar todos os diretórios diretas de um usuário específico: find /home/ -maxdepth 1 -type d -user www-data. Então, obrigado, e +1
Cyril N.

1

ls -ld: Fornecerá a lista de diretórios, sem descer em subdiretórios.

Exemplo:

ls -ld Cust*
Este comando fornecerá uma lista dos arquivos e diretórios que começam com Cust.


1
É essencialmente o mesmo que a resposta aceita de cinco anos de idade.
Scott
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.