find コマンドの空でない出力のみをファイルに保存したいです。出力がない場合、ファイルは作成されません。
$ ls folder
aa
$ find . -name 'bb' | tee file
$ cat file
$ ls folder
aa file
どうやってするの?
答え1
答え2
-exec
ファイルが見つかった場合にのみ実行されるオプションを使用します。
find . -name 'bb' -exec sh -c 'printf "%s\n" "$@" | tee -a file' sh {} +
説明:
printf "%s\n" "$@"
各引数を末尾に改行を付けて出力します。sh
の 2 番目の引数sh -c
が に割り当てられます$0
。{} +
引数として-exec
、これらは「選択されたすべてのファイル」を表します。sh -c
これらを、などに割り当て$1
ます$2
。