Unix 如何仅突出显示ls输出中的一项

Unix 如何仅突出显示ls输出中的一项,unix,colors,ls,Unix,Colors,Ls,Unix命令的真正初学者,因此不确定以下操作是否确实可行,但现在开始。 是否可以突出显示ls输出中的一项 例如:在目录中,我使用以下内容 ls -l --color=auto 这以绿色列出了4项 file1.xls file2.xls file3.xls file4.xls 但我想强调一个特定的项目,在本例中是file2。 这可能吗?ls程序不会为您执行此操作。但是您可以通过一个自定义脚本过滤ls中的结果,该脚本修改文本以只突出显示一个项目。如果最初没有给出颜色,则会更简单;然后,您可以匹配

Unix命令的真正初学者,因此不确定以下操作是否确实可行,但现在开始。 是否可以突出显示ls输出中的一项

例如:在目录中,我使用以下内容

ls -l --color=auto
这以绿色列出了4项

file1.xls
file2.xls
file3.xls
file4.xls
但我想强调一个特定的项目,在本例中是file2。
这可能吗?

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

这当然是可能的。编写示例脚本是另一个问题

你如何处理这个问题取决于你想从输出中得到什么。如果这是(字面上)来自
ls
的输出,并且只有一个彩色文件名,那么脚本将是正常的方法。您可以使用另一个答案中建议的
grep
,这会引发一些问题:

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

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

  • 然而,在GNU grep对颜色的使用中有一个已知的bug(参见xterm常见问题)
  • 像这样使用grep只显示匹配的行。对于
    ls
    ,这可能是一个不错的选择。对于手册页中的匹配项,绝对不是
或者,
less
(在Unix系统上比GNU grep更常见)也可以突出显示匹配项(不是颜色),并在上下文中显示您要查找的文件。您可以这样做:

ls -l | less -p file2

(grep
grep
less
都使用模式又称正则表达式,但我把示例留得很简单-阅读文档了解更多信息)。

如果您是初学者,我强烈建议您学习
grep
命令,如果您想过滤结果-Unix用户最好的朋友(反正是我的朋友)

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

ls- l | grep "file2" 
注意:顺便说一下,这与键入
ls-lfile2
没有什么不同,但是您的模式可以根据您实际想要在屏幕上显示的内容进行扩展

因此,如果您的目录中充满了文件“.txt”、“.xls”、“.doc”,并且您只想看到名称(work1.doc)中带有单词“work”的“.doc”,那么您可以编写:

ls -ls | grep "work" | grep "txt" 
这将列出work1.txt、work2.txt、work3.txt等等

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

使用grep-v的一个小旁注将向您展示除您给出的模式之外的所有内容

ls-l | grep-v.txt“
将显示除.txt文件以外的所有内容