Pergunta

Se eu fizer

$ ls -l --color=always

Eu recebo uma lista de arquivos dentro do diretório com alguma coloração agradável para diferentes tipos de arquivos etc ..

Agora, eu quero ser capaz de canalizar a saída de cor de ls através grep para filtrar alguns arquivos que eu não preciso. A chave é que eu ainda quero preservar a coloração após o filtro grep.

$ ls -l --color=always | grep -E some_regex

^ I perder a coloração após grep

EDIT: Estou usando headless-servidor Ubuntu 8.10, Bash 3.2.39, praticamente um estoque instalar sem fantasia configurações

Foi útil?

Solução

Seu grep é provavelmente remover códigos de cores do ls porque tem a sua própria coloração ligado.

Você "poderia" fazer isso:

ls -l --color=always | grep --color=never pattern

No entanto, é muito importante que você entenda o que exatamente você está grepping aqui. Não só é grepping ls desnecessário (usar uma glob vez), neste caso particular é grepping através não apenas nomes de arquivos e arquivos de estatísticas, mas também através dos códigos de cores adicionadas por ls!

A verdadeira resposta à sua pergunta é: não grep-lo. Nunca há uma necessidade de ls tubulação em qualquer coisa ou captura sua saída. ls destina-se apenas para a interpretação humana (ex. a olhar na em um interativa desembolsar apenas, e para este efeito, é extremamente útil, é claro). Como mencionado antes, você pode filtrar quais arquivos enumera ls usando globs:

ls -l *.txt      # Show all files with filenames ending with `.txt'.
ls -l !(foo).txt # Show all files with filenames that end on `.txt' but aren't `foo.txt'. (This requires `shopt -s extglob` to be on, you can put it in ~/.bashrc)

I altamente recomendo que você leia estes dois documentos excelentes sobre o assunto:

Outras dicas

Você deve verificar se você está realmente usando os ls "reais", apenas chamando diretamente o binário:

/bin/ls ....

Por causa:. O código que você descreveu realmente deve funcionar, a menos que ls ignora --color = sempre, por algum motivo estranho ou bug

Eu suspeito que alguns alias ou função que adiciona (diretamente ou através de uma variável) algumas opções. Duplo-check que este não é o caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top