繁体   English   中英

使用grep和*获得确切的文件名

[英]Using grep and * to get the exact file name

我有以下堆堆文件

AppSrv01]# ls -ltr *heapdump*
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3436
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3435
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3434
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3433
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3432
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3431
-rw-r--r-- 1 root root 0 Sep 13 17:03 heapdump.dfsdf

现在,如果我使用

ls -ltr| grep heapdump*

我得到以下输出

AppSrv01]# ls -ltr |grep heapdump*
-rw-r--r-- 1 root     root     0 Sep 13 17:03 heapdump.dfsdf

但是我用

ls -ltr |grep *heapdump*

我没有输出。 任何人都可以帮助我的错误在哪里以及如何搜索heapdump文件。

我的预期输出是

ls -ltr | grep *heapdump*

应该给我

-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3436
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3435
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3434
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3433
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3432
-rw-r--r-- 1 root root 0 Sep 13 16:44 hbsbdheapdump.3431
-rw-r--r-- 1 root root 0 Sep 13 17:03 heapdump.dfsdf

由于某些原因,我无法使用

ls -ltr *heapdump*

看起来您正在将glob模式与正则表达式混淆,这就是grep使用的。

打印包含单词heapdump的文件列表的正确方法是这样的:

printf '%s\n' *heapdump*

在这里, *heapdump*被shell全局扩展,以匹配后跟“ heapdump”和其他任何内容。 所有与模式匹配的文件都传递给printf ,后者会打印每个文件,然后换行。

如果要过滤ls -ltr的输出,则可以使用:

ls -ltr *heapdump*

相同的文件列表将传递给lsls将输出有关它们的信息。

请记住, 建议尝试解析ls的输出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM