使用tee命令将输出重定向到不存在的目录中的文件

com*_*ose 8 unix linux shell tee

我正在尝试使用tee命令将输出重定向到文件,我希望在尚未创建的目录中创建该文件.

date | tee new_dir/new_file
Run Code Online (Sandbox Code Playgroud)

当new_dir不存在时,tee命令失败说

tee:new_dir/new_file:没有这样的文件或目录

如果我在运行tee命令之前创建new_dir,那么它工作正常,但由于某种原因我不想手动创建new_dir,是否可以使用tee命令创建new_dir?

Lar*_*off 15

不.您必须在运行之前创建目录tee.


Wil*_*ell 7

替换tee为为您创建目录的函数:

tee() { mkdir -p ${1%/*} && command tee "$@"; }
Run Code Online (Sandbox Code Playgroud)

如果您希望函数在使用简单文件名调用时工作:

tee() { if test "$1" != "${1%/*}"; then mkdir -p ${1%/*}; fi &&
   command tee "$1"; }
Run Code Online (Sandbox Code Playgroud)