Como listar primeiro as pastas com sublinhados?


23

Portanto, como quase todo mundo, antes de usar o Ubuntu, usei uma máquina Windows, e uma das coisas com as quais me acostumei no Windows era usar o sublinhado como o primeiro caractere de um nome de pasta como algum tipo de marcação especial para que aparecem primeiro na lista, na linha de comando e no explorador de arquivos.

Por exemplo, na minha pasta de livros eletrônicos (no Windows) é algo como isto:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf

mas no Nautilus do Ubuntu, fica assim:

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf

O que está acontecendo é que ele ignora completamente o sublinhado e trata "_read" como "lido" e, portanto, não o lista primeiro como desejado.

Eu tentei definir a variável de ambiente LC_COLLATE como C. Isso ajuda de alguma forma, pois lista o sublinhado, mas no final e não no começo.

Obrigado.


você pode incluir uma captura de tela?
precisa saber é

Possível duplicata de askubuntu.com/questions/115741/… embora eu ache que a resposta de @ maggotbrain é melhor do que a apresentada lá.
Rudivonstaden

Respostas:


16

Como você não especificou o código do idioma que está usando no momento, esta solução assume que você está usando en_US.UTF-8como padrão.

Você pode verificar isso executando o comando localena linha de comando ( Ctrl+ Alt+ t).

Por exemplo:

~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

A variável que afeta a ordem de classificação dos arquivos é chamada LC_COLLATE .

De acordo com as páginas de ajuda do Ubuntu , a variável LC_COLLATE determina "Como as strings (nomes de arquivos ...) são classificadas em ordem alfabética. O uso da localidade" C "ou" POSIX "aqui resulta em uma ordem de classificação semelhante ao strcmp (), que pode ser preferível a localidades específicas do idioma ".

A ordem de classificação precisará ser alterada de LC_COLLATE="en_US.UTF-8"para LC_COLLATE=C.

Na linha de comando ( Ctrl+ Alt+ t), digite:

update-locale LC_COLLATE=C

Importante: Você precisa se desconectar do sistema e depois se conectar novamente para que as alterações tenham efeito .

Executando o localecomando novamente, ele deve mostrar que a LC_COLLATEvariável foi alterada com sucesso. A execução do comando ls -lnovamente deve refletir essa alteração.


1
Eu já configurei o LC_COLLATE para C, como descrevi no último parágrafo da minha pergunta. Ainda assim, estou obtendo resultados diferentes no terminal e no nautilus explorer e, enquanto isso, reiniciamos o computador. Alguma idéia de por que isso está acontecendo?
Nunos

@unos Você tem algum apelido definido lsno seu .bashrc?
Kevin Bowen

@nunos Interessante. Em que tipo de sistema de arquivos você está verificando isso? O único lugar que tenho problemas com a ls -lclassificação é em uma unidade formatada em NTFS que não parece honrar a variável LC_COLLATE. Todos os meus sistemas de arquivos ext3 parecem respeitar essa configuração usando o comando ls, bem como no Thunar e Nautilus.
precisa saber é o seguinte

esse pode muito bem ser o problema então. Estou usando o ls -lcomando em uma unidade NTFS, pois tenho uma inicialização dupla com o Windows.
Nunos

2
update-locale LC_COLLATE=Cnão ajuda a obter pastas com sublinhados no topo de uma lista classificada, se você usar letras maiúsculas no início dos nomes das pastas!
malisokan

1

caja (e acho que o Nautilus antes dele) tem uma opção em Preferências para classificar pastas antes dos arquivos. Isso ajudaria?

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.