
나는 임의의 디렉터리에 있는 두 개의 서로 다른 파일 확장자(*.parquet 또는 *.metadata)에 대한 다양한 파일 통계를 가져오는 작은 스크립트를 작성 중입니다. 지난 24시간 이내에 수정/생성된 파일에서만 이러한 파일 통계를 가져와야 합니다.
TD=${1:-`pwd`}
find $TD -maxdepth 1 -type f -mtime -1 -name "*.parquet" -o -name "*.metadata" | wc -l
find $TD -maxdepth 1 -type f -mtime -1 -name "*.parquet" | wc -l
find $TD -maxdepth 1 -type f -mtime -1 -name "*.metadata" | wc -l
첫 번째 라인 출력60540
두 번째 라인 출력430
세 번째 라인 출력430
예상되는 출력은 첫 번째 줄이 두 번째와 세 번째 줄의 합이 되는 것입니다(또는 두 번째와 세 번째 줄은 다음과 같습니다).firstline / 2
내가 하려는 일은 .parquet 또는 .metadata 확장자로 끝나는 모든 파일을 나열하고 두 확장자의 총 파일 양, 각 확장자의 총 파일 크기, 각 확장자의 평균 파일 크기, 합계를 계산하는 것입니다. 모든 파일 크기
통계를 찾는 것은 쉽습니다. 단지 나를 괴롭히는 파일을 나열하는 것뿐입니다. 내가 도대체 뭘 잘못하고있는 겁니까?
답변1
문제를 일으키는 것은 연산자 우선 순위입니다. 사이의 논리 연산이 없는 모든 표현식은 와 암시적으로 연결되어 -a
보다 높은 우선순위를 가지므로 -o
결합된 표현식은 다음과 같습니다.
find $TD \( -maxdepth 1 -a -type f -a -mtime -1 -a -name "*.parquet" \) -o -name "*.metadata" | wc -l
*.parquet
이는 지난 24시간 동안 이름으로 수정된 검색 디렉토리의 모든 일반 파일 과 검색 디렉토리 트리의 어느 곳에든 있고 언제든지 수정되는 모든 파일/디렉토리/소켓 등을 찾는다는 것을 의미합니다. 이름으로 *.metadata
. 당신에게 필요한 것은:
find $TD -maxdepth 1 -type f -mtime -1 \( -name "*.parquet" -o -name "*.metadata" \) | wc -l