Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用grep和*获取确切的文件名_Linux_Bash_Shell_Grep - Fatal编程技术网

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

Linux 使用grep和*获取确切的文件名,linux,bash,shell,grep,Linux,Bash,Shell,Grep,我有以下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

我有以下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*

看起来你把glob模式和正则表达式混淆了,这正是
grep
所使用的

打印包含单词
heapdump
的文件列表的正确方法如下:

printf '%s\n' *heapdump*
在这里,
*heapdump*
由shell进行glob扩展,以匹配后跟“heapdump”和其他任何内容的任何内容。所有与模式匹配的文件都被传递到
printf
,后者打印每个文件,然后换行

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

ls -ltr *heapdump*
相同的文件列表将传递给
ls
,后者将打印有关这些文件的信息


请记住,

shell将
*
扩展为第一个实例中的单个文件和第二个实例中的多个文件,在第二个实例中,您将搜索所有其他文件中匹配的第一个文件。引用
*headdump*
可能会给您带来所需的行为。您想要的具体输出是什么?你能把你的问题说得更清楚吗?我已经编辑了我的帖子。嗨,汤姆,谢谢你的回复,你能分享一些内容/链接来解释为什么ls输出不应该像我通常做的那样被解析,如果它是错误的,你将不得不纠正我的习惯。我的答案已经包含了一个搜索链接“parse ls”也将产生大量结果。感谢allot printf“%s\n”heapdump使我的生活变得轻松无问题-当然,如果文件名包含换行符,此方法将失败(从技术上讲,这是可能的)。