[英]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*
相同的文件列表将传递给ls
, ls
将输出有关它们的信息。
请记住, 不建议尝试解析ls
的输出 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.