シナリオ
私はNAS(DSM4.3に基づくSynologyDS1813 +)を持っています。これはLinuxのバージョンを実行するため、ファイルシステムは(おそらく)大文字と小文字を区別します。NAS 2台のコンピューターで。1台はWindows7(大文字と小文字を区別しないファイルシステム)を実行し、ネットワーク共有を介してNAS)に接続します。もう1台はLinux Mint(大文字と小文字を区別するファイルシステム)を実行し、 NASをCIFSでマウントします。
デジタルカメラ(Canon 7D)をWindowsコンピューターに接続し、カメラからの画像をネットワーク共有を介してNAS)にインポートしました。NAS大文字の拡張子(IMG_8835.JPG)があります。
後で、Linuxマシンで、次のコマンドと出力を使用して拡張子が小文字になるように、これらのイメージの名前を一括で変更しようとしました。
$ find . -name '*.*' -exec sh -c 'a=$(echo {} | sed -r "s/([^.]*)\$/\L\1/"); [ "$a" != "{}" ] && mv "{}" "$a" ' \;
mv: ‘./IMG_8835.JPG’ and ‘./IMG_8835.jpg’ are the same file
そして:
$ rename s/.JPG/.jpg/ *.JPG
IMG_8835.JPG not renamed: IMG_8835.jpg already exists
これは、ファイルシステムで大文字と小文字が区別されないことを示しています。正しい?
さらに、私は試しました:
$ rename -f s/.JPG/.jpg/ *.JPG
このコマンドの出力は空白だったので、うまくいったのではないかと思いました。しかし、ファイルを確認したところ、ファイルの拡張子はまだ大文字でした。ファイルは複製されません。タイプ*.jpg
のファイルはありません。それらはすべてまだ*.JPG
です。
質問
注:この質問は、これと重複するものではありません 質問 この質問は、ファイルの名前を一括で変更する方法ではなく、ファイルシステムの大文字と小文字の区別について質問しているためです。
友人が私に this を教えてくれました。リンク先の記事は8ページありますが、説明が冗長です。答えの短いバージョンは次のとおりです。
... And that brings me to what I really want to discuss, which is how
CIFS Server (Samba) deals with this.
As you would expect from an application that was grown to bridge
the gap between the Unix and Windows worlds, it is very flexible.
This is both good and bad - with flexibility comes responsibility,
and sometimes not a little confusion. There are four configuration
options that Samba provides to allow one to define its behavior
when dealing with matters of 'case':
preserve case = (yes/no)
short preserve case = (yes/no)
default case = (upper/lower)
case sensitive = (yes/no)
解決策は、 Sambaを構成 で、特定のニーズに対応する方法でケースの機密性(またはケースの保存の問題)を処理します。