로그 파일을 찾아 자르고 싶습니다. 왜 이것이 작동하지 않습니까?
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 '' {} \;