在Unix命令中真正的初学者,所以不确定以下是否真的可行但是这里。 是否可以在ls输出中仅突出显示一个项目?
即:在目录中我使用以下
ls -l --color=auto
以绿色
列出4项file1.xls
file2.xls
file3.xls
file4.xls
但我想突出显示一个特定项目,在本例中为file2。 这可能吗?
答案 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
ls
可能是个不错的选择。对于手册页中的匹配 - 绝对不是。或者,less
(在Unix系统上比GNU grep更常见)也可以突出显示匹配(不是彩色),并在上下文中显示您要查找的文件。你可以这样做:
ls -l | less -p file2
(grep
和less
都使用模式又名正则表达式,但我将示例简单化了 - 阅读文档以了解更多信息)
答案 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文件。