计算文件名的字节数

计算文件名的字节数

我如何知道文件名的重量有多少字节?只是文件,而不是完整路径。我试过这个:

echo 'filename.extension' | wc -c

这是正确的吗?

答案1

看起来不错;然而,echo 默认情况下会添加一个尾随换行符,所以echo -norprintf是你的朋友。如果你想将 /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 兼容的 shell 中有一种更简单的方法(例如 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);
    }

相关内容