Quando eu executo um comando ls *
, ele mostrará
- arquivos no diretório atual
- diretórios nos diretórios atuais
- arquivos e diretórios nos diretórios nos diretórios atuais.
Quando eu uso ls
, não quero ver dentro dos diretórios no diretório atual. Estou um pouco confuso porque há mais de 8 anos que uso o Ubuntu, nunca vi nada assim antes.
É assim que ls
deve funcionar? Existe uma maneira de parar 3
de acontecer?
Por exemplo, se eu tiver file1.file folder1 folder2 folder3 textfile1.txt
Eu quero que ls f* apareça apenas
file1.file
folder1
folder2
folder3
Ubuntu 20.04 LTS
Uma maneira é usar o
find
comando em vez dels
. Você pode usar-maxdepth 1
para não ler em pastas e usar apenas a-name
opção para curingas.Exemplo:
Retornará tudo na pasta atual,
.
começando com nomes de pastas em minúsculasf
, mas não mostrará nenhum conteúdo dentro da(s) pasta(s).Você está esperando que funcione como no MS-DOS, no entanto, este é o linux.
Os curingas no linux são expandidos pelo seu shell para corresponder a todos os itens que se encaixam nos curingas.
ls
não vê seu curinga. Ele vê apenas uma lista de nomes de arquivos e diretórios que correspondem ao curinga. Assim, ele mostrará o conteúdo de todos os itens listados, ou seja, o nome de um arquivo ou o conteúdo de uma pasta. No MS-DOS, os curingas fariam com que odir
próprio comando filtrasse a lista para listar apenas os nomes que correspondam ao curinga.Para filtrar a saída de
ls
, por exemplo, para ver apenas os nomes de arquivos e pastas correspondentesf*
, usegrep
, ou seja, canalize a saída de ls para grep como:^
e.*
são expressões regulares.^f
significa:f
mas apenas no início..*
significa.
qualquer caractere*
qualquer número de vezes.