解決find: paths must precede expression

今天在服務器上執行 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
相關文章
相關標籤/搜索