Qual é a alternativa para o comando ls no linux? [duplicado]

0

Como posso listar o diretório atual ou qualquer conteúdo do caminho de diretório sem usar o comando ls? Podemos fazer isso usando o comando echo?

    
por kashminder 11.08.2015 / 13:31

2 respostas

3
printf '%s\n' *

como um comando shell listará os arquivos não ocultos no diretório atual, um por linha. Se não houver nenhum arquivo não oculto, ele exibirá * sozinho, exceto nos shells em que o problema foi corrigido (csh, tcsh, fish, zsh, bash -O failglob).

echo *

Listará os arquivos não ocultos separados por caracteres de espaço, exceto (dependendo da implementação do shell / echo) quando o primeiro nome de arquivo começar com - ou os nomes de arquivos contiverem caracteres de barra invertida.

É importante notar que é o shell que expande * na lista de arquivos antes de passá-lo para o comando. Você pode usar qualquer comando aqui como head -- * para exibir as primeiras linhas (com as head implementações que aceitam vários arquivos), stat -- * ...

Eu quero incluir arquivos ocultos:

printf '%s\n' .* *

(dependendo do shell, isso também incluirá . e .. ). Com zsh :

printf '%s\n' *(D)

Entre os outros aplicativos (além dos shell globs e ls ) que podem listar o conteúdo de um diretório, também há find :

find . ! -name . -prune

(inclui arquivos ocultos, exceto . e .. ).

No Linux, lsattr (lista os atributos do arquivo estendido do Linux):

lsattr
lsattr -a # to include hidden files like with ls
    
por 11.08.2015 / 13:40
1

Se você quiser apenas uma lista de conteúdo do diretório: find . -maxdepth 1

ou para qualquer outro diretório: find <dir> -maxdepth 1

    
por 11.08.2015 / 13:39