최근에 접한이 페이지파일을 비우는 방법을 나타냅니다. 특정 하위 폴더의 모든 파일에 대해 이 작업을 수행하려면 어떻게 해야 합니까?
예를 들어, > file.log
다음을 사용하여 파일을 지우려면?
기본적으로 가상 머신 인스턴스 이미지를 생성하고 템플릿을 사용할 때 남은 데이터 없이 재부팅되도록 기존 로그 파일을 지우고 싶습니다.
답변1
그리고
for i in /var/log/*; do
> "$i"
done
디렉터리에 대한 오류 메시지를 방지하려면 테스트를 포함하세요.
for i in /var/log/*; do
test -f "$i" && > "$i"
done
답변2
단일 명령의 또 다른 옵션은 다음과 같습니다.truncate
:
truncate -s /var/log/*
그러나 위 코드는 /var/log의 모든 하위 디렉터리에 대해 오류를 발생시킵니다.
잘림: 쓰기 위해 '/var/log/subdir'을 열 수 없습니다. 디렉터리입니다.
...stderr를 제거하여 무음으로 설정할 수 있습니다.
truncate -s /var/log/* 2>/dev/null
파일이나 디렉토리가 없으면 현재 nullglob
쉘 옵션에 주의해야 합니다. 기본적으로는 꺼져 있습니다:
$ shopt nullglob
nullglob off
...이렇게 하면 *
콘텐츠가 확장되지 않은 상태로 유지되므로 truncate
이라는 파일이 생성됩니다 *
. 다음 두 가지 방법으로 이를 방지할 수 있습니다.
shopt -s nullglob
nullglob 설정: 실행하기 전에truncate
. 그런 다음 (stderr을 삭제하지 않으면) 오류가 표시됩니다.잘림: 파일 피연산자 누락
truncate
누락된 파일을 생성하지 않도록 지시합니다 .truncate --no-create -s 0 /var/log/*