Ваш grep, вероятно, удаляет цветовые коды ls
, потому что он имеет свою собственную окраску.
Вы «можете» сделать это:
ls -l --color=always | grep --color=never pattern
Однако, очень важно, чтобы вы поняли, что именно вы здесь grep
ping. Не только grep
ping ls
не нужен (вместо этого используйте glob
), этот конкретный случай - grep
пинг через не только имена файлов и статистику файла, но также и цветовые коды, добавленные ls
!
Настоящий ответ на ваш вопрос: Не grep
это. Никогда не нужно трубить ls
во что угодно или захватывать его вывод. ls
предназначен только для интерпретации человека (например, look в только в интерактивной оболочке, и для этой цели это очень удобно, конечно). Как уже упоминалось ранее, вы можете отфильтровать, какие файлы ls
перечислены с помощью глобусов:
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
: http://mywiki.wooledge.org/ParsingLs glob
s: http://mywiki.wooledge.org/glob