我一直在使用zsh的通配符進行諸如命令:爲什麼zsh globbing不能使用find命令?
vim **/filename
vim *.html.erb
等等,但是當我像鍵入:
find . -name *mobile*
我得到的迴應:
zsh: no matches found: *mobile*
爲什麼?
我一直在使用zsh的通配符進行諸如命令:爲什麼zsh globbing不能使用find命令?
vim **/filename
vim *.html.erb
等等,但是當我像鍵入:
find . -name *mobile*
我得到的迴應:
zsh: no matches found: *mobile*
爲什麼?
find . -name *mobile* # does not work
VS
find . -name '*mobile*' # works
的差異是由於以下步驟,當它解析線殼需要。通常情況下,shell會在運行命令之前擴展它找到的所有通配符。但是,單引號將參數標記爲文字,這意味着在運行該命令之前,shell不會對該參數執行通配符擴展。
爲了展示差別,假設你是在以下文件目錄:
$ tree
./
mobile.1
dir/
mobile.2
的zsh將展開第一個形式運行前執行以下操作:
find . -name mobile.1
這意味着,找到只會尋找文件名字面意思mobile.1
第二種形式將運行如下:
find . -name *mobile*
這意味着find將查找包含字符串「mobile」的任何文件名。
這裏需要注意的重要一點是,zsh和find都支持相同的通配符語法,但是您希望在本例中找到處理通配符而不是zsh的。
結果證明,所有你需要做的要解決的問題是周圍添加輸入一些報價:
find . -name '*mobile*'
我真的不知道答案,爲什麼只是還沒有...和文檔沒有任何東西對我有用,但是如果你知道答案,請告訴我!
我認爲這裏有更好的回答:https://unix.stackexchange.com/questions/130958/scp-wildcard-not-working-in-zsh – sttaq