找到一个文件并截断​​它

找到一个文件并截断​​它

我只是想找到一个日志文件并截断​​它。为什么这不起作用?

find ${listener}/tracefiles/${listener}.log -exec cp /dev/null '{}'\;

这会返回一个错误:find: missing argument to-exec'`

答案1

这很简单:

find ${listener}/tracefiles -name ${listener}.log -exec truncate -s0 {} \;

答案2

前面必须有空格;

find "${listener}/tracefiles/${listener}.log" -exec cp /dev/null {} \;

find -exec但调用单个文件没有任何意义。你为什么不使用

test -f "${listener}/tracefiles/${listener}.log" &&
    cp /dev/null "${listener}/tracefiles/${listener}.log"

答案3

这不起作用,因为您需要在 之前有一个空格\;。尝试这个:

find ${listener}/tracefiles/${listener}.log -exec cp /dev/null '{}' \;

然而,这是一种不必要的复杂截断文件的方法。首先,由于您显然知道文件的确切路径,因此您需要做的就是:

> ${listener}/tracefiles/${listener}.log

如果您要find避免创建不存在的文件,您可以尝试:

[ -e ${listener}/tracefiles/${listener}.log ] && > ${listener}/tracefiles/${listener}.log

如果您确实需要find(如果您有多个文件要处理),您可以使用

find ${listener}/tracefiles/${listener}.log -exec sh -c '> {}' \;

甚至:

find ${listener}/tracefiles/${listener}.log -exec printf '' {} \;

相关内容