將非空輸出定向到文件中

將非空輸出定向到文件中

我只想將 find 命令的非空輸出儲存到檔案中。如果沒有輸出檔案則不應建立。

$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file

怎麼做?

答案1

實用性ifne從包裝中moreutils應該完成你想要的:

$ find . -name 'bb' | ifne tee file

從手冊頁:

描述

伊夫內當且僅當標準輸入不為空時執行以下命令。

答案2

使用該-exec選項,該選項僅在找到文件時運行:

find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +

解釋:

  • printf "%s\n" "$@"列印每個參數並帶有尾隨換行符。
  • sh的第二個參數sh -c被分配給$0
  • {} +作為-exec參數,它們代表“所有選定的文件”。sh -c將它們分配給$1$2等。

相關內容