如何突出ls输出中的一个项目

时间:2015-06-02 09:26:39

标签: unix colors ls

在Unix命令中真正的初学者,所以不确定以下是否真的可行但是这里。 是否可以在ls输出中仅突出显示一个项目?

即:在目录中我使用以下

ls -l --color=auto

以绿色

列出4项
file1.xls
file2.xls
file3.xls
file4.xls

但我想突出显示一个特定项目,在本例中为file2。 这可能吗?

2 个答案:

答案 0 :(得分:0)

ls程序不会为您执行此操作。但是您可以通过自定义脚本过滤ls的结果,该脚本会修改文本以突出显示一个项目。如果最初没有给出颜色会更简单;那么你可以匹配给定的文件名(例如作为awk脚本中的模式,或者在sed脚本中)并且只修改那个项目,添加颜色。

也就是说,当然有可能。编写示例脚本是一个不同的问题。

您如何处理问题取决于您从输出中想要的内容。如果(字面上)ls的输出具有单个文件名的颜色,那么脚本将是正常的方法。您可以按照其他答案中的建议使用grep,这会引发一些问题:

  • 评论ls -l --color=auto听起来好像你正在使用GNU ls,因此可能使用Linux。问题的适当标签是 linux 而不是 unix 。如果您要求 unix ,答案应该有所不同。
  • 假设您使用的是Linux。那么你可能有GNU grep,它可以做颜色。那会让你做这样的事情:

    ls -l | grep --color=always file2 |less -R

  • 然而,GNU grep使用颜色存在一个已知错误(请参阅xterm FAQ "grep --color" does not show the right output )。
  • 使用像这样的grep只显示匹配的行。 ls可能是个不错的选择。对于手册页中的匹配 - 绝对不是。

或者,less(在Unix系统上比GNU grep更常见)也可以突出显示匹配(不是彩色),并在上下文中显示您要查找的文件。你可以这样做:

ls -l | less -p file2

grepless都使用模式又名正则表达式,但我将示例简单化了 - 阅读文档以了解更多信息)

答案 1 :(得分:0)

如果你是初学者,我强烈建议你学习grep命令,如果你想过滤结果 - 一个Unix用户最好的朋友(无论如何)

使用grep仅显示您要查看的列表项...

ls- l | grep "file2" 

注意:这与按顺序键入ls -l file2没有什么不同,但您的模式可以根据您实际想要在屏幕上显示的内容进行扩展。

所以,如果你有一个目录,里面装满了“.txt”,“。xls”,“。doc”文件,你只想在名称(work1.doc)中看到“.doc”这个单词“work”你可以写:

ls -ls | grep "work" | grep "txt" 

这将列出work1.txt,work2.txt,work3.txt等。

这是一个非常基本的例子,但我在unix shell中广泛使用grep,并建议使用它来过滤所有结果而不是颜色。

使用grep -v的一个小注释会向你显示除了你给它的模式之外的所有内容

ls -l | grep -v ".txt"将显示所有BUT .txt文件。