我有以下heapdump文件
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*
答案 0 :(得分:2)
看起来你正在混淆使用正则表达式的glob模式,这是grep
使用的。
打印包含单词heapdump
的文件列表的正确方法如下:
printf '%s\n' *heapdump*
在这里,*heapdump*
由shell进行全局扩展,以匹配" heapdump"其次是其他任何事情。与模式匹配的所有文件都将传递给printf
,后者会打印每个文件后跟换行符。
如果要过滤ls -ltr
的输出,则可以使用:
ls -ltr *heapdump*
相同的文件列表将传递给ls
,它将打印有关它们的信息。
请记住it is not recommended to attempt to parse the output of ls
。