ls não tem opção para fazer isso, mas uma das coisas boas sobre o unix & linux é que pipelines longos e deselegantes podem ser facilmente transformados em um shell script, função ou alias. e estes, por sua vez, podem ser usados em pipelines como qualquer outro programa.
(NOTA: existem alguns problemas de escopo com funções e aliases. Scripts estão disponíveis para qualquer executável que possa lê-los e executá-los. Aliases e funções estão disponíveis apenas no shell atual - embora o .profile / .bashrc de um sub-shell etc pode redefini-los e, assim, torná-los disponíveis.Além disso, um script pode ser escrito em qualquer idioma - incluindo bash / sh, awk, perl, python e outros - o que for melhor para o trabalho ou com o qual você está mais familiarizado)
por exemplo,
alias lsf='find . -maxdepth 1 -type f -print0 | xargs -0r ls'
Eu adicionei xargs para que você possa usar todas as opções usuais de ls , por exemplo lsf -lrS
Como ele usa find , todos os dotfiles normalmente ocultos serão exibidos e todos os nomes de arquivos serão prefixados com ./ - essa é a única diferença que você notará.
Você pode excluir os arquivos de ponto com ! -iname '.*' , mas você precisa ter duas versões do alias - uma que exiba arquivos de pontos e outra que não tenha.
alias lsf2='find . -maxdepth 1 -type f -a ! -iname '\''.*'\'' -print0 | xargs -0r ls'
Como alternativa, se lsf fosse um script em vez de um alias, você poderia analisar as opções (talvez com getopts ou / usr / bin / getopt ou similar) e excluir dotfiles a menos que -a estivesse presente.