ユーザ用ツール

サイト用ツール


サイドバー

最新の10件
一覧
linux:filesystem

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

filesystem

tips

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

ファイルシステムは 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の日本語などは短くなる

$ 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.1579249282.txt.gz · 最終更新: 2020/01/17 17:21 by matoken