web-dev-qa-db-ja.com

フォルダー内の2つのファイルに同じ名前を付けるにはどうすればよいですか?

2つのファイルをダウンロードしましたが、どちらも同じファイル名で保存され、scpを使用して別のコンピューターに転送しました。

2番目が保存されたときに、なぜ1つにならないのですか

12

多分それらは同じ名前を持っているようにlookだけです.

試してください:

$ touch Stéphane Stéphane Stéphane\  St​éphane
$ ls -1
Stéphane
Stéphane
St​éphane
Stéphane 

彼らはほとんど同じに見えます。

$ ls -1b
Stéphane
Stéphane
St​éphane
Stéphane\ 

やや良い。スペース文字は\としてフラグが立てられます(すべてのls実装がこれを行うわけではありません)。

$ LC_ALL=C ls -1b
Ste\314\201phane
St\303\251phane
St\303\251phane\ 
St\342\200\213\303\251phane

今話しています(非ASCII文字はすべて、バイト構成要素の8進値としてレンダリングされます)

あなたも行うことができ、それはどの入力でも機能します:

$ ls | LC_ALL=C sed -n l
Ste\314\201phane$
St\303\251phane$
St\342\200\213\303\251phane$
St\303\251phane $

ここでは、行の終わりが$でマークされているため、末尾のスペースを見つけやすくなっています。ただし、これはStéphane<newline>Stéphaneというファイルを見つけるのに役立ちません

$ ls | Perl -Mopen=locale -MUnicode::UCD=charinfo -lpe '
       s/[^\41-\177]/"<".charinfo(ord$&)->{name}.">"/ge'
Ste<COMBINING ACUTE ACCENT>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane
St<ZERO WIDTH SPACE><LATIN SMALL LETTER E WITH ACUTE>phane
St<LATIN SMALL LETTER E WITH ACUTE>phane<SPACE>

何が起こったのかを明確にします。

この件についての詳細は this other answer も参照してください。

39