チルダの文字なる
Samba経由でLinuxのファイルを見ると、英数文字で5文字、チルダ、英数字のファイルになる。
再現方法
次のようなファイルを作ると、再現できる。
touch aaaa?
原因
Linuxのファイル文字とWindowsの使用禁止文字が異なるためらしい。
対応
Windowsで禁止されているファイル文字を使わないようにする
化ける文字
次の文字が化ける。
> : " / \ | ? * <
クエスチョンマーク
! は問題ないが、?マークで化けるので ?
を何とかする
たとえば、!?と連続して使われる場合、!?の代わりに絵文字の⁉を使うとか。
rename 's/!\?/⁉/g'
単体の?
は全角に変換しておけばいいでしょう。
rename 's/\?/?/g'
!? のように使われると全角にすると読みにくくなる。なので、⁉の絵文字を使った。
よくあるパターン
*
アスタリスクが化ける。
アスタリスクなんて使わないと思うんだけど、コマンド入力ミスでファイルが作られてしまったりする。
rename 's/\*/\*/g'
...
ピリオドの三点リーダー
ファイル名に ...
があると化ける。三点リーダーにする
再現方法
mkdir aa....
対症方法
rename 's/.\.\.\/\…/g'
その他に、ピリオドが原因で起きるもの
調べてみると、末尾に、3つ以上で表示がおかしくなりました。
touch い. # 表示可 touch ああ.. # 表示可 touch ううう... # 起きる touch ええええ.... # 起きる touch お...おおお # 表示可
bbb \aaa
末尾の空白
ファイル名の末尾に空白があると化けます。
再現方法
touch 'Xaaa '
rename 's/ +$//'
末尾の空白は、1つ以上でダメです。複数スペースもダメです。
全角のスペースは使えます。
"!?"と続けた場合
これは!?.txt # 化ける これは⁉.txt # 化けない
このことから ! ?
が続けてて使われている場合は、⁉
のマルチバイト文字に置換したほうがいいかと思います。
Sambaのファイル名に注意する必要がある。
Sambaでファイルを扱うとどうしてもこういう細かい部分で苦労する。
ファイル名に...
や !?
なんか使うか?と思うんだけど調べたら結構ありました。
作りかけのファイルだったり、ファイル名でコミュニケーションをしている使い方をしてる企業様や、WEBページをHTML保存したときに発生しますね。
スクレーパー掛けたときにファイル名をWebページのtitle
にしている場合なんかも起きますね。
参考資料
SMB経由でアクセスすると、ファイルまたはフォルダの名前が12HWA0〜8のように表示されます。どうすればいいですか? - Synology ナレッジセンター