日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

find+*的问题

發(fā)布時間:2025/5/22 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 find+*的问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自find+*的問題


不久前做移植的時候想把某個目錄下的C文件都找出來,然后拷貝下,結果一直報錯,我用的是*.c作為pattern。今天看論壇的時候知道為什么了。

$ ls?

test2.c ?test.c ?test.txt

目錄下有兩個.c文件,還有一個.txt文件

$ find . -name *.c

error?:?find: 路徑必須在表達式之前: test.c
用法: find [-H] [-L] [-P] [-Olevel] [-D help|tree|search|stat|rates|opt|exec] [path...] [expression]

$ find . -name *.txt

./test.txt

$ find . -name "*.c"

./test2.c
./test.c

原因:

若是不加引號 $ find . -name?*.txt?成功,而不加引號的 $ find . -name?*.c?出錯了,得看看shell是怎么執(zhí)行這句話的,首先shell讀到了 *.txt 和 *.c,因為 * 是shell認為的?meta?(理解為特殊字符),所以就先解釋*txt 先執(zhí)行成 test.txt,傳遞給find,find就去執(zhí)行自己的操作,根據pattern發(fā)現(xiàn)符合要求。而 *.c 被shell翻譯成了test.c和test2.c,這時候命令就變成了 find . -name test.c test2.c 這就出錯了!因為find -name 選項后面只能支持一個文件的搜索。所以對于test2.c是前面沒有選項,就報錯了!

對于有引號的 find . -name "*.c",shell讀到"*.c"的時候,會當作參數處理,傳遞給find,find之后會自己處理 *.c,可以查看 man find ,里面有

The metacharacters (`*', `?', and `[]')?match a `.'


轉載于:https://www.cnblogs.com/noble/p/4144192.html

總結

以上是生活随笔為你收集整理的find+*的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。