それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

Explorer で Sambaを見るとファイル名がチルダの文字になる

チルダの文字なる

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 ナレッジセンター