파일 이름의 바이트 수 계산

파일 이름의 바이트 수 계산

파일 이름의 무게가 몇 바이트인지 어떻게 알 수 있나요? 전체 경로가 아닌 파일만. 나는 이것을 시도했습니다 :

echo 'filename.extension' | wc -c

이 올바른지?

답변1

좋아 보이지만 echo는 기본적으로 후행 줄 바꿈을 추가하므로 echo -nor도 printf마찬가지입니다. /path/to/files/like/this/filename.extension을 filename.extension으로 변환하려는 경우 다음과 같습니다.

filepath='/path/to/files/like/this/filename.extension'
namelength=$(printf "%s" "$(basename "${filepath}")" | wc -c)

네가 원한다면특징(또는 유사한 것) 길이,아니요바이트 계산:
POSIX 호환 셸(bash 및 zsh 등)에는 더 쉬운 방법이 있으므로 아마도 그 중 하나를 사용하고 있을 것입니다.

filename="${filepath##*/}"
namelength=${#filename}

확장은 ${#varname}변수의 길이를 직접 제공합니다.

답변2

파일 이름을 테스트하는 것이 아니라 문자열만 테스트하는 것입니다. 하지만 빠르고 더러운 해킹은 어떻습니까?

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <string.h>

int main(int argc, char **argv) {
            int fcount = 1;
            int ret = 0;
            struct stat fstat_details;
    
            while (fcount != argc) {
                    ret = stat (argv[fcount], &fstat_details);
    
                    if (ret == 0) {
                            printf ("file: %s, length: %lu\n", argv[fcount], strlen(argv[fcount]));
                    } else {
                            printf ("file %s not found\n", argv[fcount]);
                    }
                    fcount++;
            }
            return(0);
    }

관련 정보