web-dev-qa-db-ja.com

findまたはlsは、MacOS(HFS +)のフォルダー内のすべてのファイルを一覧表示しません

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:[〜]:
3
Gerard Yin

可能性のあるシナリオ:

Аキリル文字Aラテン文字 があります。見た目は同じかもしれませんが、コーディングが異なります。

面倒なファイル名の2番目の「A」がラテン語でない場合は、次のように入力した可能性があります。

ls dis/AS

次にヒット tab シェルがキリル文字で名前をオートコンプリートしたので、違いさえわかりませんでした。このlsが機能していることに気づきました。

次にヒットします 、インライン編集を行い、パスに触れずにlsfindに変換しました(まだ非ラテン文字が含まれています)。 findが機能していることに気づきました。

ただし、grepと入力する場合は、手動でASA.mdと入力します。すべてラテン文字で、キリル文字は含まれていません。コマンドが期待どおりに機能しません。

確かにAだと言っているのではありません。私は、1つ以上のキャラクターがあなたが思っているものではないかもしれないと言っています。


このシナリオを確認または却下するために、動作するfindコマンドの16進出力を分析します

find dis/ASА.md | xxd

手作業で入力したこのコマンドと比較してください

echo dis/ASA.md | xxd

注:私の投稿では、キリル文字Аがいくつかの場所で使用されているため、無意識にコピーして貼り付けないでください。


一方、質問本文に投稿されたリテラルコードは、一貫したラテン語のみの方法でdis/ASA.mdを使用しているようです。ターミナルからコピーされた場合(個別に入力されていない場合)、私の仮説はおそらく特定のケースには当てはまりません。

1