ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
linux:filesystem

**以前のリビジョンの文書です**

filesystem

tips

日本語ファイル名が長すぎて処理に失敗する

UnavailableVideoError: [Errno 36] File name too long: '/home/matoken/Videos/\xe7\x95\xb0\xe7\xa8\xae\xe6\x97\x8f\xe3\x83\xac\xe3\x83\x93\xe3\x83\xa5\xe3\x82\xa2\xe3\x83\xbc\xe3\x82\xba\xe3\x80\x80\xe7\xac\xac1\xe8\xa9\xb1\xe3\x80\x80\xe3\x82\xa8\xe3\x83\xab\xe3\x83\x95\xe3\x81\xae\xe7\x86\x9f\xe5\xa5\xb3\xe3\x81\xa8\xe4\xba\xba\xe9\x96\x93\xe3\x81\xae\xe7\x86\x9f\xe5\xa5\xb3\xe3\x81\xab\xe3\x81\xa4\xe3\x81\x84\xe3\x81\xa6\xe3\x81\xae\xe8\xad\xb0\xe8\xab\x96\xe3\x81\x8c\xe6\xb2\xb8\xe9\xa8\xb0\xe3\x81\x97\xe3\x80\x81\xe5\xa4\xa9\xe4\xbd\xbf\xe3\x81\xaf\xe3\x83\x8b\xe3\x83\xa3\xe3\x83\xb3\xe3\x83\x8b\xe3\x83\xa3\xe3\x83\xb3\xe5\xa4\xa9\xe5\x9b\xbd\xe3\x81\xa7\xe6\x98\x87\xe5\xa4\xa9\xe3\x81\x97\xe3\x80\x81\xe6\x9c\x89\xe7\xbf\xbc\xe4\xba\xba\xe3\x81\xaf\xe7\xb7\x8f\xe6\x8e\x92\xe6\xb3\x84\xe5\xad\x94\xe3\x81\xa7\xe6\x84\x9f\xe5\xba\xa6\xe3\x82\x82\xe6\x8a\x9c\xe7\xbe\xa4\xef\xbc\x81.fdash-b4723d03-31f0-456c-9a49-70aa8ce6134c-1.m4a.ytdl'

ファイルシステムは ext4。 ファイル名長はバイト単位なので、255文字まで。

$ while [ true ]; do     if ! touch $(printf "%${num}s"  | tr ' ' 'a');    then        echo $num;        break;    fi;    ((num++)); done
touch: cannot touch 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa': File name too long
256

UTF-8の日本語などは1文字当たりのバイト数が多くなる(1〜4bite)ので文字数は短くなる

$ num=1;str="あ";while :; do if ! touch $str;    then        echo $num;        break;    fi;    ((num++)); str="$strあ"; done
touch: cannot touch ''$'\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202': File name too long
86

今回の処理はほんの少し足りない程度なので惜しい……。そういえばNTFSやexFATはUnicodeで文字数を数えていた気がするので試してみる。

まずは一時的なexFAT領域を作る

$ dd if=/dev/zero of=./700M.img bs=1M count=700
$ fdisk ./700M.img
$ kpartx -av ./700M.img
$ sudo mkfs.exfat /dev/mapper/loop0p1
$ sudo mount /dev/mapper/loop0p1 /mnt

exfat領域で確認

$ num=1;str="あ";while :; do if ! touch $str;    then        echo $num;        break;    fi;    ((num++)); str="$strあ"; done
touch: cannot touch ''$'\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202\343\201\202': File name too long
256

今回はこれで回避した。

コメント

コメントを入力. Wiki文法が有効です:
     __  _____   ___    ___    __ __
 __ / / / ___/  / _ |  / _ |  / //_/
/ // / / (_ /  / __ | / __ | / ,<   
\___/  \___/  /_/ |_|/_/ |_|/_/|_|
 
linux/filesystem.1579286391.txt.gz · 最終更新: 2020/01/18 03:39 by matoken