问答详情
源自:4-3 Linux中 find命令

find命令使用了通配符,-exec 后面就不能跟 ls -lh 这条命令了,为什么????

http://img1.mukewang.com/5d8b79580001343d03550179.jpg这里使用了通配符,查询结果是我想要的

http://img.mukewang.com/5d8b7a3b0001165b06590431.jpg

结果 find /etc -name "*yum*" -exec ls -lh {} \;   这条命令执行后,搜索结果我却看不懂了。请问为什么会有这么大的差别?怎样才能得到我想要的结果???

提问者:慕田峪3367142 2019-09-25 22:35

个回答

  • 慕田峪3367142
    2019-09-26 00:01:20

    好吧,我解决了。。。。find /etc -name "*yum*" -exec ls -lh {} \; 这条命令执行后,查找到的结果是符合条件的文件和符合条件的目录下的文件,却不显示目录的详细信息,问题是我只是想找目录并显示目录详细信息。

    解决方法1:find /etc -name "*yum*" -exec ls -ldh  {} \;  

        注1:ls -d:列出目录,而不是目录下的内容,并且不要取消符号链接(软链接)的引用

        注2:那么如果我想使用find+ls 查询并显示我想要找的目录和目录下文件的详细信息呢?个人答案:没有意义,使用find的前提是不知道文件在哪里,如果知道了文件在哪里,直接使用cd后ls更直接。如果有人有办法使用find+ls查找目录并层级显示目录下的文件,请告诉我,分享是美德,谢谢!

    解决方法2:ls -lh /etc/ | grep yum:这是在知道想要查找目录大致范围的情况下,可以使用的方法。。。