bash – 保存ls着色后grep’ing

如果我做
$ ls -l --color=always

我得到目录中的文件列表,并为不同的文件类型等提供了一些很好的着色。

现在,我想通过grep来管理ls的彩色输出,以过滤掉一些我不需要的文件。关键是我仍然希望在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

但是,您了解您在这里的感受是非常重要的。不仅不需要使用ls(使用glob代替),这种特殊情况不仅仅是通过文件名和文件统计信息,还可以通过ls添加的颜色代码

你的问题的真正答案是:不要grep。从来没有必要将ls管入任何东西或捕获其输出。 ls只用于人的解释(例如,仅在交互式shell中查看,为此目的非常方便)。如前所述,您可以使用globs过滤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
>球的力量:http://mywiki.wooledge.org/glob

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...