關於find命令 -name 匹配字符無法正確生效的問題 find: paths must precede expression:


linux下find命令
 
find /yazuo_apps/crm35/current -name *.sh;
 
此命令在某些情況下不能順利找到/yazuo_apps/crm35/current下的*.sh文件
 
-name后面的參數 *.sh 並不一定會直接傳給 find命令,而是現在當前目錄下進行匹配
 
根據當前目錄的匹配情況,可能有一下三種可能:
 
1、當前目錄不存在*.sh,此時shell會順利的把 *.sh傳遞給find命令,此時一切順利。
2、當目錄存在一個abc.sh時,shell命令實際變為 find /yazuo_apps/crm35/current -name abc.sh;
3、當前目錄存在多個sh文件(abc.sh; cba.sh),shell命令實際變為 find /yazuo_apps/crm35/current -name abc.sh cba.sh;,此時因為-name后面有兩個匹配字符,shell將報錯。
 find: paths must precede expression:
 
解決方法:
-name 的匹配字符串一定要用單引號或雙引號引住,防止以上問題發生。
正確的命令:
find /yazuo_apps/crm35/current -name "*.sh";
 
總結:
shell的細節還是有很多需要研究,在以后的使用過程中要力求嚴謹!
 
參考文章
http://zhousir.sinaapp.com/?p=81#comment-486


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM