ls
またはfind
コマンドは、特定のフォルダーにあるすべてのファイルを見つけているようには見えません。 Macを実行しています(El Capitan 10.11.6(15G21013)、500GB SSD、HFS +で)。約70万個のファイルがあるフォルダの1つに、開くことができるファイルがあります。ファイル名を指定すると、ls
またはfind
がそのファイルを見つけます。ただし、フォルダに適用されたls
またはfind
は、ファイルを見つけることができません。これはHFS +の破損のように見えますか?このような問題を最小限のダウンタイムとファイルシステムのリスクで修復するには、どのような方法またはツールが推奨されますか?
11:16:35 gyin @ mymac:[〜/]:ls dis/ASA.md dis/ASA.md 11:19:06 gyin @ mymac:[ 〜/]:dis/ASA.md dis/ASA.md 11:19:40 gyin @ mymac:[〜/]:dis | grep "ASA.md" dis/CASA.md dis/DASA.md 11:19:55 gyin @ mymac:[〜/]:ls dis | grep "ASA.md" CASA.md DASA.md 11:20:36 gyin @ mymac:[〜/]:find dis | wc -l 717004
更新:
カミルの答えに従うと、それはUnicodeの問題のようには見えません。
13:28:12 gyin @ mymac:[〜]:dis /ASA.mdを検索| xxd 00000000:6469 732f 4153 412e 6d64 0a dis/ASA.md。 13:28:25gyin @ mymac:[〜]:echo dis/ASA.md | xxd 00000000:6469 732f 4153 412e 6d64 0a dis/ASA.md。 13:28:34gyin @ mymac:[〜]:
可能性のあるシナリオ:
А
キリル文字 と A
ラテン文字 があります。見た目は同じかもしれませんが、コーディングが異なります。
面倒なファイル名の2番目の「A」がラテン語でない場合は、次のように入力した可能性があります。
ls dis/AS
次にヒット tab シェルがキリル文字で名前をオートコンプリートしたので、違いさえわかりませんでした。このls
が機能していることに気づきました。
次にヒットします ↑、インライン編集を行い、パスに触れずにls
をfind
に変換しました(まだ非ラテン文字が含まれています)。 find
が機能していることに気づきました。
ただし、grep
と入力する場合は、手動でASA.md
と入力します。すべてラテン文字で、キリル文字は含まれていません。コマンドが期待どおりに機能しません。
確かにA
だと言っているのではありません。私は、1つ以上のキャラクターがあなたが思っているものではないかもしれないと言っています。
このシナリオを確認または却下するために、動作するfind
コマンドの16進出力を分析します:
find dis/ASА.md | xxd
手作業で入力したこのコマンドと比較してください:
echo dis/ASA.md | xxd
注:私の投稿では、キリル文字А
がいくつかの場所で使用されているため、無意識にコピーして貼り付けないでください。
一方、質問本文に投稿されたリテラルコードは、一貫したラテン語のみの方法でdis/ASA.md
を使用しているようです。ターミナルからコピーされた場合(個別に入力されていない場合)、私の仮説はおそらく特定のケースには当てはまりません。