【发布时间】:2012-03-22 12:27:00
【问题描述】:
当我通过 ls 管道时,如何告诉 grep 仅在“文件名”匹配的情况下打印行?我希望它忽略每一行上的所有内容,直到时间戳之后。必须有一些简单的方法可以在单个命令上执行此操作。
如您所见,如果没有它,如果我搜索文件“rwx”,它不仅会返回包含 rwx.c 的行,还会返回前三行,因为权限。我打算使用 AWK,但如果我搜索“rwx”,我希望它显示整个最后一行。
有什么想法吗?
编辑:感谢下面的黑客攻击。但是,最好有一个更无错误的方法。例如,如果我有一个名为“rob rob”的文件,我将无法使用所述解决方案。
drwxrwxr-x 2 rob rob 4096 2012-03-04 18:03 .
drwxrwxr-x 4 rob rob 4096 2012-03-04 12:38 ..
-rwxrwxr-x 1 rob rob 13783 2012-03-04 18:03 a.out
-rw-rw-r-- 1 rob rob 4294 2012-03-04 18:02 function1.c
-rw-rw-r-- 1 rob rob 273 2012-03-04 12:54 function1.c~
-rw-rw-r-- 1 rob rob 16 2012-03-04 18:02 rwx.c
-rw-rw-r-- 1 rob rob 16 2012-03-04 18:02 rob rob
【问题讨论】:
-
如果只想要文件名,不要使用
ls -al;使用普通的ls -a获取有趣的名称,然后使用ls -ld获取它们的详细信息?解析ls的输出是出了名的困难,即使在您尝试考虑包含空格的文件名之前也是如此。好消息:即使日期格式发生变化,时间中的列数仍保持不变(两个空格分隔的值)。 -
我同意乔纳森的观点;如果您要做的只是列出文件,则将正确的选项传递给 ls。
-
实际上,我对日期列的评论并不完全准确;您的
ls -l显示两列;我的最近文件显示三个:-r--r--r-- 1 jleffler staff 26676 Mar 3 21:44 ccs.nmd和旧文件-r--r--r-- 1 jleffler staff 6510 Mar 17 2003 README,v。