我怎样才能突出显示 ls 输出中的一项

how can I highlight just one item from the ls output

真正的 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 听起来好像您在使用 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 都使用 模式 又名 正则表达式 ,但我让示例保持简单— 阅读文档以了解更多信息)。

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

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

ls- l | grep "file2" 

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

因此,如果您有一个包含文件“.txt”、“.xls”、“.doc”的目录,并且您只想看到名称中带有单词 "work" 的“.doc”( work1.doc) 你可以这样写:

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

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

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

使用 grep -v 的一点旁注将向您展示除您提供的模式之外的所有内容

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