根据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选项似乎更复杂
答案 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