今天在服務器上執行 find ./ -mtime +30 -type f -name .php的時候,報下面的錯誤:php
find: paths must precede expression: 2.txt Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]
而後就上網查了一下,結果搜索到一篇,大概是這樣說的:多文件的查找的時候須要增長引號。express
find ./ -mtime +30 -type f -name '.php' 或 find ./ -mtime +30 -type f -name ".php"
這樣執行後就沒有再報錯了,一個小問題獲得解決.服務器
##例子:code
進入tmp目錄新建4個文本文件io
cd /tmp touch {1,2,3,4}.txt find . -name *.txt find: paths must precede expression: 2.txt Usage: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression] ``` 出現這個提示是由於星號被展開爲當前目錄下全部的文件,這樣的匹配固然會出錯。看這個就知道了: ``` echo * 1.txt 2.txt 3.txt 4.txt echo '*' * echo \* * ``` 想要星號不被展開就須要加上括號或者反斜槓轉義,知道了這些咱們就知道該怎麼find了 ``` find . -name '*.txt' ./4.txt ./2.txt ./3.txt ./1.txt ``` 或者使用反斜槓 ``` find . -name \*.txt ./4.txt ./2.txt ./3.txt ./1.txt ``` #### 參考資料 https://www.jianshu.com/p/0986b196862d