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