파일을 찾아서 자릅니다.

파일을 찾아서 자릅니다.

로그 파일을 찾아 자르고 싶습니다. 왜 이것이 작동하지 않습니까?

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 '' {} \;

관련 정보