내 서버의 대용량 로그 파일과 백업을 정리하고 싶습니다.
나는 이것을 생각해 냈습니다 :
find ./ -size +1M | xargs rm
하지만 mp3와 mp4는 포함하고 싶지 않습니다. 로그 및 아카이브 파일(zip, tar 등)에 대해서만 이 작업을 수행하고 싶습니다.
그 명령은 어떤 모습일까요?
답변1
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -delete
- 이
\( \)
구조를 사용하면 다양한 파일 이름 패턴을 그룹화할 수 있습니다. - 옵션을 사용하면
-delete
파이프와 문제를 피할 수 있습니다xargs
.이것,이것그리고이것 ./
또는 현재 디렉터리에 대해.
명령을 사용할 때 선택 사항입니다.find
편집하다:Eric Renouf가 말했듯 이 귀하의 버전이 이 옵션 find
을 지원하지 않으면 -delete
이 -exec
옵션을 사용하십시오.
find -type f \( -name "*zip" -o -name "*tar" -o -name "*gz" \) -size +1M -exec rm {} +
여기서 명령으로 필터링된 모든 파일은 명령 find
으로 전달됩니다.rm
답변2
이름별로 파일을 제외하려면 다음 구문을 사용할 수 있습니다.
find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -delete
또는 find
지원하지 않는 경우 delete
:
find . -type f ! -name '*.mp3' ! -name '*.mp4' -size +1M -exec rm {} \;
답변3
위의 답변을 바탕으로 다음 명령을 사용하여 큰 로그 파일에서 서버를 지웠습니다(/var/lib/jenkins로 cd'ing한 후).
find -type f -name *log -size +500M -delete