找到fprint附加到文件而不是截断

时间:2018-08-08 22:11:16

标签: bash find printf

根据find的手册页,-fprint和-fprintf将截断输出文件(如果存在):

   -fprint file
          True; print the full file name into file file.  If file does not exist when find is run,
          it is created; if it does exist, it is truncated.   The  file  names  `/dev/stdout'  and
          `/dev/stderr'  are  handled  specially;  they  refer to the standard output and standard
          error output, respectively.  ...

是否可以使用-fprint附加到现有文件而不是将其截断?我计划使用-print -delete >> "$logFile",因为我无法找到如何使用-fprint打印到$logFile而不先截断文件,但是使用-fprint选项似乎更复杂

1 个答案:

答案 0 :(得分:2)

您可以使用进程替换将其发送到附加到文件的命令。

-fprint >(cat >>"$logFile")

另一种解决方案是写入新文件,然后将该文件追加到日志文件中。

find ... -delete -fprint /tmp/logfile.$$
cat /tmp/logfile.$$ >> "$logFile" && rm /tmp/logfile.$$

但是我不确定为什么您会感到需要使用-fprint而不是仅仅重定向整个命令的输出。 -fprint主要用于要将不同的输出发送到不同的文件,例如

find -type d -fprint allDirs -o -type f -fprint allFiles