Isso não está funcionando porque você precisa de um espaço antes do \;
. Tente isto:
find ${listener}/tracefiles/${listener}.log -exec cp /dev/null '{}' \;
No entanto, essa é uma maneira desnecessariamente complexa de truncar o arquivo. Primeiro de tudo, desde que você aparentemente sabe o caminho exato do arquivo, tudo que você precisa fazer é:
> ${listener}/tracefiles/${listener}.log
Se você estiver usando find
para evitar a criação do arquivo, se ele não existir, tente:
[ -e ${listener}/tracefiles/${listener}.log ] && > ${listener}/tracefiles/${listener}.log
Se você realmente precisa de find
(se você tiver mais de um arquivo para trabalhar), você pode usar
find ${listener}/tracefiles/${listener}.log -exec sh -c '> {}' \;
Ou até mesmo:
find ${listener}/tracefiles/${listener}.log -exec printf '' {} \;