首頁  >  問答  >  主體

linux - find命令的-exec选项为何不能用管道命令代替?

这里有个命令

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

我想这样写

find / -perm +7000 | ls -l

发现不行,为什么?

高洛峰高洛峰2742 天前780

全部回覆(1)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:00:05

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

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

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

    回覆
    0
  • 取消回覆