linux - find命令的-exec选项为何不能用管道命令代替?
高洛峰
高洛峰 2017-04-17 11:58:05
0
1
772

这里有个命令

find / -perm +7000 -exec ls -l {} \;

我想这样写

find / -perm +7000 | ls -l

发现不行,为什么?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(1)
伊谢尔伦

首先什麼是管道, 即前一個程式的 標準輸出 作為後一個程式的標準輸入.

find 指令會在終端機(標準輸出)上列印出找到的檔案; 如果ls -l的運作原理是在 终端等待输入, 用户输入一个文件名, 打印出文件信息. 則這是你想要的. 但是ls -l 實際上不會去讀終端.

xargs則把前一個程式的標準輸出轉為了 後一個程式的 命令列參數.
如 如果 find / -perm +7000 回傳 /tmp/1.txt, 則 find / -perm +7000 | xargs ls -l 中 後一個指令實際上是 ls -l /tmp/1.txt

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!