我只是想找到一个日志文件并截断它。为什么这不起作用?
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 '' {} \;