파일에서 널로 구분된 항목 수 계산

파일에서 널로 구분된 항목 수 계산

find -print0처리할 파일 목록을 임시 파일로 저장하는 쉘 스크립트가 있습니다 . 로깅의 일부로 발견된 파일 수를 출력하고 싶기 때문에 해당 수를 얻을 수 있는 방법이 필요합니다. -print0보안상의 이유로 이 옵션을 사용하지 않는 경우 이 옵션을 사용하여 wc -l개수를 얻을 수 있습니다.

답변1

일부 옵션:

tr -cd '\0' | wc -c

tr '\n\0' '\0\n' | wc -l       # Generic approach for processing NUL-terminated
                               # records with line-based utilities (that support
                               # NUL characters in their lines like GNU ones).

grep -cz '^'                   # GNU grep

sed -nz '$='                   # recent GNU sed, no output for empty input

awk -v RS='\0' 'END{print NR}' # not all awk implementations

마지막 NUL 문자(또는 NUL 문자가 없는 비어 있지 않은 입력) 이후의 데이터를 포함하는 입력의 경우 이러한 tr메서드는 항상 NUL 문자 수를 계산하지만 awk// sed메서드는 grep이러한 추가 바이트에 대한 추가 레코드를 계산합니다.

답변2

내가 생각할 수 있는 가장 좋은 방법은 를 사용하는 것입니다 grep -zc '.*'. 이것은 작동하지만 grep 및 패턴 일치를 사용하는 것은 잘못된 것 같습니다.

답변3

그리고 perl:

perl -0ne 'END {print $.}'

또는:

perl -nle 'print scalar split "\0"'

또는:

perl -nle 'print scalar unpack "(Z*)*", $_'

관련 정보