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

这里有个命令

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!