gpt4 book ai didi

bash - bash shell中的find命令和-name选项疑惑

转载 作者:行者123 更新时间:2023-11-29 09:16:57 27 4
gpt4 key购买 nike

下面两者有什么区别:

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

我已经测试过了,它们都返回相同的结果,那么_deep inside_有什么不同吗?


添加自 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 glob(包括 * 或 ? 的通配符模式)被 shell 扩展到与 glob 匹配的所有文件中。但是,如果不存在此类文件,则该模式将保持不变。

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

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

关于bash - bash shell中的find命令和-name选项疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672577/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com