![폴더 이름의 문자 수를 인쇄합니다.](https://linux55.com/image/24023/%ED%8F%B4%EB%8D%94%20%EC%9D%B4%EB%A6%84%EC%9D%98%20%EB%AC%B8%EC%9E%90%20%EC%88%98%EB%A5%BC%20%EC%9D%B8%EC%87%84%ED%95%A9%EB%8B%88%EB%8B%A4..png)
폴더 이름의 문자 수를 인쇄하기 위해 find . -type d -print | wc -m
where -m
또는 will을 사용하려고 합니다 .--chars
아래 스크린샷을 예로 들면 문자 수는 다음과 같습니다.임시 폴더+임시 폴더+딩동폴더오직34, 슬래시 및 점 계산 이벤트는 여전히40. 명령이 인쇄되는 이유43수치? 추가된 3개의 캐릭터는 어디서 왔나요?
답변1
find . -type d -print | tr -d '\n' | wc -m
tr
모든 개행을 제거하고 wc
원하는 숫자를 계산합니다.
답변2
분명히 후행 줄 바꿈도 문자로 간주됩니다.
디렉터리당 문자 수를 원한다고 가정하면 다음과 같이 할 수 있습니다.
$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \;
1
12
27
그것은 당신이 찾고 있는 40이 됩니다. 후행 echo -n
줄 바꿈이 제거됩니다.
3개를 모두 추가하는 것도 가능합니다.
$ find -type d -exec bash -c 'echo -n $0 | wc -m' {} \; | awk '{S+=$1} END {print(S)}'
40
답변3
ct
bash/ksh/zsh 배열 의 출력을 설정한 wc -lm
다음 쉘 연산을 사용합니다.
ct=($(find . -type d -print |wc -lm)); echo $((ct[1]-ct[0]))
또는 필드 분할 및 위치 매개변수를 사용하세요.
set $(find . -type d -print |wc -lm); echo $(($2 - $1))