du 명령은 find -mmin과 함께 사용됩니다.

du 명령은 find -mmin과 함께 사용됩니다.

데이터베이스가 하루에 생성하는 아카이브 로그 수를 확인하고 싶어서 다음과 같이 했습니다.

find /u02/archivelog -mmin -1440 | du -sh220GB를 얻었습니다. 이는 해당 디렉터리에 있는 모든 파일의 총 크기이며, 하루도 채 지나지 않아 전체 크기가 아닙니다.

이렇게 하면 find /u02/archivelog -mmin -1440 -exec ls -ltrh {} \;작동하고 1일 미만의 파일만 나열됩니다. 하지만 이 논리는 적용되지 않는 것 같습니다 du.

예상되는 결과를 얻으려면 구문을 어떻게 개선해야 합니까?

답변1

du는 파이프로 연결된 파일을 허용하지 않는 것 같습니다. 내 생각에 당신이 찾고 있는 것은

find /u02/archivelog -type f -mmin -1440 -exec du -ch {} +

+대신 사용하면 find가 목록으로 ;작성되어 각 일치 항목에 대해 한 번이 아니라 한 번 실행됩니다. {}또한 사용해야 합니다 -type f. 그렇지 않으면 새 파일이 추가될 때마다 수정되는 디렉터리 자체와 일치하게 됩니다. du에 디렉토리 자체를 포함시키면 모든 파일의 크기를 다시 얻게 됩니다. -cdu에 "master" 줄도 표시하도록 만드세요 . 합계만 원할 경우 | tail -1끝에 추가할 수 있습니다.

답변2

귀하의 사용은 {} \;인수를 ls하나의 요소로 제한합니다. 보관된 로그의 총 수에 관심이 있는 경우 다음을 사용할 수 있습니다.

find /u02/archivelog -mmin -1440 -type f -exec wc -c {} + | tail -1

이 디렉터리에 있는 파일의 총 바이트 수를 가져옵니다.

시스템이 허용하는 한 많은 파일 이름을 명령줄에 입력하십시오 {} +(따라서 파일이 많거나 파일 이름이 매우 긴 경우 wc여러 번 호출될 가능성이 있습니다).wc

관련 정보