加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在bash shell中查找命令,并且-name选项有疑问

发布时间:2020-12-16 01:51:20 所属栏目:安全 来源:网络整理
导读:下面两者有什么区别: find . -type f -name *.bmpfind . -type f -name *.bmp 我测试过,它们都返回相同的结果,所以内部有什么不同的_deep? 从removed answer添加: 因此,为了避免特殊*****字符的shell扩展,只需将*作为参数传递给find命令并让它处理它. 但
下面两者有什么区别:

find . -type f -name *.bmp
find . -type f -name *.bmp

我测试过,它们都返回相同的结果,所以内部有什么不同的_deep?

从removed answer添加:

因此,为了避免特殊*****字符的shell扩展,只需将*作为参数传递给find命令并让它处理它.

但是在我的机器上,它们都很好,都返回当前目录中和下面的bmp文件,仅举几例,结果如下,为简洁省略了一些

./images/building_color.bmp
./images/building_gray.bmp
./images/car_gray.bmp
./images/temple_color.bmp
./images/boat_gray.bmp
./images/tools_gray.bmp
./images/temple_gray.bmp
./images/tools_color.bmp
./images/car_color.bmp
./images/boat_color.bmp

系统信息:

GNU bash,版本4.1.5(1)-release(i486-pc-linux-gnu)

Linux sysabod-laptop 2.6.32-30-generic#59-Ubuntu SMP Tue Mar 1 21:30:21 UTC 2011 i686 GNU / Linux

解决方法

以下是它们的不同之处:第一个始终有效,第二个无效.

至于原因:在bash中,shell globs(包括*或?的通配符模式)由shell扩展为与glob匹配的所有文件.但是,如果不存在此类文件,则保留该模式.

因此,如果您在没有bmp文件的目录中,命令的工作方式相同,因为第一个是转义的,而bash在第二种情况下无法找到匹配的任何文件.

如果你从一个只包含一个这样的文件的目录运行它,比如foo.bmp,第一个会找到子树中的所有bmp文件,而第二个会找到所有名为foo.bmp的文件.如果在具有多个bmp文件的目录中运行,我相信你会收到错误,因为find不知道如何处理所有文件名.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读