e isso ainda deixa você com './' prefixado em cada nome de arquivo. Isso não é realmente um problema, mas acho que é meio feio. Eu fui com:
ls -p | grep -v '/$'
E isso fornecerá uma listagem com a mesma aparência e você também poderá adicionar lsargumentos adicionais . Adicione um --color=alwayse você recuperará as suas cores ou -averá os arquivos ocultos.
Eu gosto da resposta de Alexander, porque ele realmente depende de uma característica do sistema de arquivos do arquivo em questão, para que nunca seja enganado. Minha resposta será enganada por um arquivo que tenha um '/' como o último caractere em seu nome. Mas isso parece estar pedindo problemas.
'-não' é GNU encontrar relacionado, já que não é compatível com POSIX, é melhor não ensinar essas opções como um usuário poderia ter habbits "maus" e se sentem perdidos em outros UNIXes :)
jirib
2
@JiriXichtkniha qual é a alternativa POSIX para -not?
Esta resposta já foi fornecida mais de um ano antes por jamded, (produzindo esse ruído visual).
Alexx Roche
2
As soluções "localizar" acima perdem alguns dos recursos do ls - por exemplo: liste apenas arquivos, classificados no tempo de modificação decrescente.
As respostas "ls -p | grep" não lidam elegantemente com outros elementos de ls como -R, caso desejem
A resposta a seguir, embora mais detalhada, na minha opinião reflete o comportamento ls mais verdadeiro e a maior flexibilidade para selecionar "apenas arquivos"
ls -t . | while read line; do
if [ -f $line ]; then
echo $line
fi
done
Simplesmente substitua as opções ls conforme desejado e o resultado será retornado apenas com arquivos. Se links e outros itens também forem necessários, um pequeno retrabalho precisará ser feito no teste de inclusão.
Com isso, você ainda pode usar outras opções lsnormalmente necessárias. Ou ... remova -vpara listar apenas diretórios. Ou ... substitua o diretório por qualquer outro tipo de arquivo que filecompreenda e relate, como ASCII, vazio, ELF e assim por diante.
Isso não funciona se qualquer um dos nomes de arquivos a serem listados contiver espaços.
Psychonaut
ls -t .|while read f;do [ -f "$f" ]&& echo $f;doneé cerca de 3x mais rápido nos meus testes
Alexx Roche 24/03
0
Eu estava em um sistema em que o findbinário não suportava -note acabei usando:
ls|while read f;do [ -f "$f" ]&& echo $f;done
Vantagens: Não depende de nada além de sh ls echo
É compatível com bash e dash
Pode ser alterado para corresponder a outras coisas (como diretórios), alterando -f
É mais rápido que algumas das respostas e usa menos RAM e CPU
ls .
sem diretórios - e aqui está.-ls
ou-exec ls -l {} \;
faria issols -l
sem diretórios.Para obtê-lo exatamente equivalente a
ls .
você, não é necessário mostrar diretórios ocultos.find . -maxdepth 1 -not -type d -and -not -name '.*'
e isso ainda deixa você com './' prefixado em cada nome de arquivo. Isso não é realmente um problema, mas acho que é meio feio. Eu fui com:
ls -p | grep -v '/$'
E isso fornecerá uma listagem com a mesma aparência e você também poderá adicionar
ls
argumentos adicionais . Adicione um--color=always
e você recuperará as suas cores ou-a
verá os arquivos ocultos.Eu gosto da resposta de Alexander, porque ele realmente depende de uma característica do sistema de arquivos do arquivo em questão, para que nunca seja enganado. Minha resposta será enganada por um arquivo que tenha um '/' como o último caractere em seu nome. Mas isso parece estar pedindo problemas.
fonte
tente isto:
ou isto:
fonte
Embora seja um post antigo, mas achei que isso poderia ajudar ..
$ ls -l | grep -v ^ d
Ele listará todos os arquivos, incluindo links simbólicos, caracteres e arquivos de bloco.
fonte
As soluções "localizar" acima perdem alguns dos recursos do ls - por exemplo: liste apenas arquivos, classificados no tempo de modificação decrescente.
As respostas "ls -p | grep" não lidam elegantemente com outros elementos de ls como -R, caso desejem
A resposta a seguir, embora mais detalhada, na minha opinião reflete o comportamento ls mais verdadeiro e a maior flexibilidade para selecionar "apenas arquivos"
Simplesmente substitua as opções ls conforme desejado e o resultado será retornado apenas com arquivos. Se links e outros itens também forem necessários, um pequeno retrabalho precisará ser feito no teste de inclusão.
fonte
Com isso, você ainda pode usar outras opções
ls
normalmente necessárias. Ou ... remova-v
para listar apenas diretórios. Ou ... substitua o diretório por qualquer outro tipo de arquivo quefile
compreenda e relate, como ASCII, vazio, ELF e assim por diante.fonte
ls -t .|while read f;do [ -f "$f" ]&& echo $f;done
é cerca de 3x mais rápido nos meus testesEu estava em um sistema em que o
find
binário não suportava-not
e acabei usando:Vantagens: Não depende de nada além de
sh ls echo
É compatível com bash e dash
Pode ser alterado para corresponder a outras coisas (como diretórios), alterando
-f
É mais rápido que algumas das respostas e usa menos RAM e CPU
fonte