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*)*", $_'