Sambaマウントで奇妙な名前にファイル名を変更する

Sambaマウントで奇妙な名前にファイル名を変更する

奇妙な名前のファイルの名前を合理的な名前に変更したいが、それはできません。

$ mv *_000c.jpg 000c.jpg
mv: cannot move '?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

私はインターネットのいくつかの場所で推奨されるinode番号を試しました。

$ ls -il *000c.jpg
ls: '?j?Z?R?C1_000c.jpg': No such file or directory
213915 -rw-r--r-- 1 wolf wolf 794655 Jul 21  2012 '?j?Z?R?C1_000c.jpg'
$ find . -inum 213915 -print0 | xargs -0 -I '{}' mv '{}' 000c.jpg
mv: cannot move './?j?Z?R?C1_000c.jpg' to '000c.jpg': No such file or directory

どうすればいいですか?

ベストアンサー1

関連コメントの要約:

Unixファイルシステムでは、\0(nul)と(スラッシュ)を除く/すべての文字をファイル名に使用できます.疑問符が表示されるのは、ls単に現在のロケールではファイル名に特定の文字を表示できないためです(これも理由の1つです)。出力を解析しないでください。ls)。

ただし、Samba共有を使用すると、標準のUnixファイルシステムよりもファイル名の要件が厳しくなります。

中間Samba共有のファイル名が「違法」なので、共有がマウントされているシステムは正しい名前でファイルにアクセスできません。

mv拡張ワイルドカードパターンのSamba共有から返された名前は、管理対象ファイルシステム上のファイルの実際の名前ではなく、Samba独自の名前の無効なバージョンなので、機能しません。

解決策は、実際にファイルをホストしているサーバー(Sambaよりも制限の少ない命名規則を使用するファイルシステム)にログインし、そこでファイル名を変更することです。これが正しいことです。

追加情報UnixとLinuxこの問題について話しましょう

おすすめ記事