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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

find : 路径必须在表达式之前

發布時間:2024/4/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 find : 路径必须在表达式之前 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本案環境:

[root@bright?public]#?cat?/etc/redhat-release?&&?uname?-r? CentOS?release?6.6?(Final) 2.6.32-504.el6.x86_64


使用find 命令時報錯:

[root@bright?public]#?find?/opt?-type?f?-name?fil*?-exce?ls?-lh?{}?\; find:?路徑必須在表達式之前:?file4.txt [root@bright?public]#?find?/?-name?*.txt find:?路徑必須在表達式之前:?file78.txt


解決的方法有兩種


使用轉義符把*轉義,即 ?\*.txt

用引號引起來 ,即 "*.txt"


原因:


首先,shell 會擴展*.txt 如果有匹配,根據匹配的數量會有不同的結果。

0 個匹配: *.txt 仍然保持不變

1 個匹配: *.txt 變成那個匹配的文件名

多于 1 個匹配: *.txt 變成多個單詞,也就是所有匹配的文件名

例如:/tmp下有1.txt 2.txt就會報錯,因為find命令成為了

find /tmp/ -name 1.txt 2.txt -exec ls -l {} \;

只有1.txt會被識別,2.txt無法識別所以會報錯。如果要在 -name 中使用正則表達式,必須加以轉義,防止 shell 首先擴展它。轉義的辦法就是加上\或者引號,這樣 -name 選項總是只接受這一個參數。


不過在我機器上不轉義也不會報錯,我覺得各個linux版本之間可能還是會有差異,這個沒有對與錯,但是需要有一個標準,寫命令的時候要按照標準來寫,也就是都加上轉義,以免寫腳本的時候其他機器報錯。


資料來源

轉載于:https://blog.51cto.com/zmyxn/1621598

總結

以上是生活随笔為你收集整理的find : 路径必须在表达式之前的全部內容,希望文章能夠幫你解決所遇到的問題。

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