이제 크기가 25MB보다 크고 날짜가 지난 7일 동안인 파일을 찾고 싶습니다. or를 어떻게 사용할 수 있나요? 이제 나는 이렇게 씁니다.
find /var/lib/docker/ -type f ( -size +25M -or -mtime +7 ) -name *.log
하지만 작동하지 않습니다.
답변1
실제로 OR(텍스트는 AND를 의미)를 의미한다고 가정하면 *.log
패턴을 인용해야 한다는 점을 제외하면 명령이 올바르게 보입니다. 또한 쉘 (
이 )
서브쉘이라고 생각하지 않도록 인용하거나 이스케이프해야 합니다.
find /var/lib/docker/ -type f \( -size +25M -o -mtime +7 \) -name '*.log'
'(' ... ')'
큰따옴표를 사용하는 것과 마찬가지로 작동합니다 .
인용하지 않으면 *.log
쉘은 실행하기 전에 현재 디렉토리의 모든 파일 이름에 대해 패턴을 확장하려고 시도합니다 find
.
위 명령에서는 -o
비표준 명령 대신 을 사용하기로 선택했습니다 -or
.
효율성에 관심이 있다면 테스트를 다음과 같이 재정렬할 수 있습니다.
find /var/lib/docker/ -name '*.log' -type f \( -size +25M -o -mtime +7 \)
즉, 이름이 일치하지 않는 한 각 파일의 크기와 타임스탬프를 가져오기 위해 호출을 find
사용할 필요가 없습니다 .stat
*.log