- 論壇徽章:
- 0
|
本帖最后由 brantc 于 2011-01-29 14:34 編輯
小弟遇到個find和xargs組合運用的問題。
已經(jīng)瀏覽了http://www.72891.cn/forum/v ... p;highlight=wingger,沒有發(fā)現(xiàn)提到,故在此提出,希望得到幫助,謝謝!
問題:
執(zhí)行:
find /var/log/ -name "log.*" | xargs ls -l
發(fā)現(xiàn):
如果僅執(zhí)行find /var/log/ -name "log.*" 的結(jié)果為空,那么上面的命令結(jié)果正確的話,也該是空;
但是執(zhí)行的實際結(jié)果是與執(zhí)行:ls -l <當(dāng)前路徑>的結(jié)果一樣的!
在RedHat,Solaris和HPUX上都有這樣的問題;只有AIX下,當(dāng)find的結(jié)果為空,那么上面的命令結(jié)果也是空。
具體示例:
比如目錄結(jié)構(gòu)如下:
/home
/home/file.txt
/home/sub/
/home/sub/1.txt
在Redhat下,執(zhí)行:
find /home/ -name "log.*"
結(jié)果當(dāng)然是什么都沒有,是正確的;
執(zhí)行:
find /home/ -name "log.*" | xargs ls -l
結(jié)果即同 ls -l /home的結(jié)果一樣,錯誤。
正確的結(jié)果應(yīng)該是:什么都不輸出。
但是,如果使用-exec替代xargs,那么每個平臺上的結(jié)果都是正確的了,即什么都不輸出,命令如下:
find /home/ -name "log.*" -exec ls -l {} \;
請高手解釋為什么,以及如何得到正確的答案。
非常感謝! |
|