[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命令。