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


12

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

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


2
ls -laお願いの結果を見せていただけますか?
ryekayo 2014

2
さらに良いですls -lb(またはls -lab、名前がで始まる場合.)。
G-Manは 'Reinstate Monica'を

1
また、何が起こったのですか?ダウンロードdir1/foodir2/fooてマシンXにダウンロードscpdir42、マシンYにコピーしたところ、同じ名前の個別のファイルとして出力されましたか?または、同じ名前の2つのファイルを同じディレクトリ(マシンX)にダウンロードして、同じ名前の個別のファイルとして出力されましたか?
G-Manは「モニカの復活」を2014

回答:


39

多分彼らは同じ名前を持っているように見えるだけです

試してください:

$ 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>

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

この件についての詳細は、この別の回答も参照してください。


1
ステファンに聞いてよろしければ、パイプコマンドLC_ALL=C sed -n 1は何をするのですか
ryekayo 2014

3
sedlコマンドは、入力を視覚的に明確な形式で表示します。LC_ALL = Cを使用すると、ASCII文字のみが使用されるようになります(少なくともGNU sedでは必要ありません)。
ステファンChazelas

2
StéphaneChazelas@また、使用することができます:LC_ALL=C ls -b
vinc17

@ vinc17、良い点、それはまた、改行文字を含むファイルを見つけるためにsedよりも優れていますが、常に末尾のスペースを見つけるためではありません。回答に追加しました。
ステファンChazelas

くそー、TIL、ファイル名の末尾にスペースを含めることができます。ファイルシステム上に同じ名前のファイルが2つあるようです。すばらしい回答ls | LC_ALL=C sed -n lでした。本当に今は本当に時間を大幅に節約できました。ありがとうございます。
Elijah Lynn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.