Linux의 파일 계산

Linux의 파일 계산

디렉터리와 해당 하위 디렉터리에 있는 모든 파일의 수를 가져오고 싶지만 .zip 파일의 수는 계산하고 싶지 않습니다. 그래서 나는 다음과 같이 될 것 같아요 :

find . -iname "*.zip" -type f 2> /dev/null | wc -l

이전 버전을 제외하고 .zip 파일만 반환되며 다른 파일만 계산하고 싶습니다.

답변1

LC_ALL=C find .//. ! -iname '*.zip' -type f 2> /dev/null |
  LC_ALL=C grep -c //

통계 이름은 으로 끝나지 않습니다 .zip.

몇 가지 참고사항:

  • find표현식에서 테스트를 부정하려면 !표현식 앞에 추가하면 됩니다. 일부 find구현에서는 이를 지원 -not하지만 이는 표준도 아니고 이식성도 없습니다.
  • 파일 이름이 사용자 로케일에서 유효한 텍스트를 구성하지 않는 경우에도 로 끝나는 파일 이름을 찾으려면 현지화 find( 사용 )를 비활성화하려고 합니다 . 또한 대문자는 로케일에 따라 다릅니다. 어떤 경우에는 이고 어떤 경우에는 입니다 . C 언어 환경에서는 . LC_ALL=C.zipiIİI-name '*.[zZ][iI][pP]'
  • 파일 경로는 여러 줄로 구성될 수 있으며 wc -l이를 사용하여 계산하는 것은 의미가 없습니다. 여기서는 find .//.so를 사용하여 //각 파일 경로( )에서 고유한 항목을 찾고 이를 계산하는 데 사용합니다 grep -c. GNU 도구를 사용하여 를 사용할 수도 있지만 find ... -print0 | sed -z '$='0개의 파일이 발견되면 출력이 제공되지 않습니다. find ... -print0 | tr -cd '\0' | wc -c더 좋을 것입니다(그러나 숫자 주위에 공백이 있을 수 있습니다). 당신은 또한 볼 수 있습니다 find ... -print0 | gawk -v 'RS=\0' 'END{print NR}'. 또는 GNU를 사용하세요 find: find ... -printf . | wc -c.

관련 정보