[20250118]find命令文件统配符使用引号.txt

[20250118]find命令文件统配符使用引号.txt

--//网上看到的问题,实际上问题许多人包括我自己也经常会犯类似的错误。因为如果没有引号,bash shell会展开解释。
--//通过一个简单例子说明问题:

$ mkdir 202501
$ cd 202501

$ touch a1.txt
$ touch a2.txt

$ echo *.txt
a1.txt a2.txt

$ echo *.aaaa
*.aaaa

--//前者当前目录存在a1.txt ,a2.txt ,当执行echo *.txt时自动展开a1.txt a2.txt。
--//而后者echo *.aaaa ,当前目录不存在匹配该模式的文件,展开的是*.aaaa,有时候find命令执行正常就是这个原因。
--//当前目录没有,而子目录存在,find命令执行正确的情况。

--//做一个特殊的例子说明问题。
$ rm -f a1.txt a2.txt

$ touch +6+

$ echo 2 * 3 | bc
11

$ echo 2 * 3
2 +6+ 3
--//实际上echo 2 * 3展开的是2+6+3 ,这样bc的计算结果就是11.改写如下都是正确的。

$ echo 2 "*" 3  | bc
6

$ echo 2 '*' 3  | bc
6

$ echo 2 \* 3  | bc
6

--//总之,理解好这些细节,就可以规避这些可能遇到的古怪问题,当然不仅仅是find命令。