ファイル名の重さが何バイトかどうかはどうすればわかりますか?フルパスではないファイルのみ。私はこれを試しました:
echo 'filename.extension' | wc -c
これは正しいですか?
答え1
よさそうですが、echoは基本的に末尾の改行を追加するので、echo -n
orも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など)にはより簡単な方法があるので、おそらくそれらの1つを使用しているでしょう。
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);
}