디렉터리와 해당 하위 디렉터리에 있는 모든 파일의 수를 가져오고 싶지만 .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
.zip
i
I
İ
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
.