Вопрос

Если я сделаю

$ ls -l --color=always

Я получаю список файлов внутри каталога с красивой раскраской для разных типов файлов и т. д.

Теперь я хочу иметь возможность передавать цветной вывод ls через grep чтобы отфильтровать некоторые файлы, которые мне не нужны.Ключ в том, что я все еще хочу сохранить цвет после фильтра grep.

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

^ Я теряю окраску после grep

РЕДАКТИРОВАТЬ:Я использую безголовый сервер Ubuntu 8.10, Bash 3.2.39, практически стандартную установку без каких-либо необычных конфигураций.

Это было полезно?

Решение

Ваш grep, вероятно, удаляется lsцветовые коды, потому что у него включена собственная раскраска.

Вы «могли бы» сделать это:

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

Однако очень важно, чтобы вы понимали, чем именно вы являетесь. grepпинг сюда.Мало того, что grepпинг ls ненужно (используйте glob вместо этого), этот конкретный случай grepпинговать не только имена файлов и статистику файлов, но и цветовые коды, добавленные ls!

Настоящий ответ на ваш вопрос:Не grep это.Никогда не нужно трубить ls во что-либо или захватить его вывод. ls предназначен только для человеческой интерпретации (например.к смотреть в интерактивный только оболочка, и для этой цели она, конечно, чрезвычайно удобна).Как упоминалось ранее, вы можете фильтровать файлы ls перечисляет с использованием 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)

я высоко рекомендую вам прочитать эти два превосходных документа по этому вопросу:

Другие советы

Вам следует проверить, действительно ли вы используете «настоящий» ls, просто вызвав двоичный файл:

/bin/ls ....

Потому что:Описанный вами код действительно должен работать, если только ls не игнорирует --color=always по какой-то странной причине или ошибке.

Я подозреваю, что это какой-то псевдоним или функция, которая добавляет (напрямую или через переменную) некоторые параметры.Еще раз проверьте, что это не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top