[20250118]find命令檔案統配符使用引號.txt

lfree發表於2025-01-18
[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命令。

相關文章