外付けドライブ、ゴミ箱を空にすることはできません、rmはファイルを認識しますが、ls -laは認識しません


9

外付けドライブの音楽フォルダをクリアしていたところ、何を試しても削除できないディレクトリが見つかりました。

GUI経由でゴミ箱に入れた場合

アイテム「フォルダ」が使用中のため、操作を完了できません。

rm -rf端末から削除する場合

$ rm -rf folder/
rm: folder/: Directory not empty

ls -la内容確認に使用する場合

$ ls -la
total 512
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

rm -i *フォルダ内で使用する場合

$ rm -i *
rm: 03 - Ēlusion.mp3: No such file or directory

sudo lsof +D folder/開いているファイルがあるかどうかを確認するために使用する場合

プログラムの終了時に何も戻りません。

ディスクユーティリティを使用してディスクとボリュームを修復(応急処置)した場合

ヘルスチェックに合格したため、修復は開始されませんでした。

macOSを再起動した場合

問題が解決しない。

追加情報:

  • ドライブ内のフォルダーを移動できますが、別のドライブには移動できません。

  • フォルダの名前を変更できます。

  • ls -i *.mp3リターンls: 03 - Ēlusion.mp3: No such file or directoryと同じ、rm -i *.mp3

  • ファイルがFinderに表示されない、それは混乱を招く部分です。ターミナルで発生する可能性のあるファイル名の表示の問題は何でも(私は常にそれを使用するように設定しますUnicode - UTF-8)、もっと力があると思います。

質問に答えても、いや、ls -ib何も返されません。

$ ls -i
$ ls -ib
$ ls -laib
total 512
2762318 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff  131072 Jan  3  2017 ..

どうやら中には何かあるのls -la見えませんでしたがrm -i、ファイル名がおかしいのですか?

get info GUIコンテキストメニューを介して、フォルダーに1つのアイテムがあることを確認しましたが、バイトがゼロであり、ファインダーに表示されません。

この時点で何をしたらよいかわかりません。どうぞよろしくお願いいたします。

(外部ドライブで10.13.4 + ExFATを使用)


1
必要なすべてのものをバックアップすることを検討しました-おそらくすでにとにかくバックアップされています...その後、ドライブを完全に再フォーマットしてやり直しますか?
ソーラーマイク

ないls -bファイルを表示しますか?もしそうなら、あなたls -biはinodeを取得して以下の答えに従うか、あるいは単に-b出力にファイル名をコピーすることができます。
リード

コアの問題はファイル名にあるのではないと思いますls -bi *.mp3。OPに示されているのと同じ結果を示します。
bitinn 2018

回答:


10

この問題は、folderという名前のディレクトリ内にある03-Ēlusion.mp3という名前のファイルが原因で発生するようです。

Terminal.appはファイル名に発音区別符号を付けることができないため、そうですが、それはあなたに最も簡単な解決策を提供する範囲を超えています-ファイル名を非表示にすることで失敗を隠します(今まで聞いたことのないもの) ;たぶん、High Sierraによる/.file、/.volfs、および64ビットのiノードへの変更?待ってください-気にしないでください。質問を編集すると、誤解されました。)とにかく、ファイルの存在は、皮肉にもFinderが存在しないという競合。明らかにそうです。これを変更する方法は次のとおりです。

まず、ファイルのiノード番号を確認します。Terminal.appで、cd「フォルダ」ディレクトリに移動し、次のコマンドを発行します。ls -i *.mp3

応答の左側の列にあるiノードの数値文字列をコピーします。これは次のようになります。

12345678 03 - E ̄lusion.mp3

-それを次のコマンドに追加します。これにより、ターミナルが正しくレンダリングできるものに名前が変更されます。

find . -inum 12345678 -exec mv {} deletemenow \;

-フォルダ「folder」内のファイル「deletemenow」を提供します。どちらも、自分の好みに最も適した方法で処分できます。


うわー、それは非常に恐ろしいバグです。
クリリス

2
これは正確ではないと思います。端末はレンダリングできない単一の文字を非表示にする場合がありますが、テキストの行全体は削除されません。
duskwuff -inactive- 2018

1
@duskwuffどちらにしても、ファイル名が問題を引き起こしていると思われるため、これは関係なく解決策になる可能性があります。
JAB 2018

申し訳ありませんが、問題はこれよりも複雑に見え$ ls -i *.mp3ますls: 03 - Ēlusion.mp3: No such file or directory
bitinn 2018

1
ls -iシェルのワイルドカード展開が妨害されないように、ディレクトリ内で実行できますか?
ノーヒルサイド

9

この要約に到達するのに長い時間がかかりましたが、それが決定的な答えだと思います。

私の問題の原因はよく知られているものです:

OS Xは、ファイル名を正規化する点と、より一般的なNFCではなくNFDを使用する点の両方で奇妙なものです。

歴史的に(それ以前ではなく、10.11以前の時代)、OS X + HFS +はすべてのファイル名にNFD形式を適用し、コマンドとシステムコールからのみNFD結果を取得します。

その後、状況が変わり始めます。10.11では、一部のシステムコールの結果がNFC正規化されます。これにより、WindowsとLinuxにインライン化されますが、OS XでNFDを期待する一部のプログラムが機能しなくなります。

しかし、macOS 10.13 + AFPSの導入以来、動作は再び変わります:Appleは、ディスプレイおよびシステムコールNFDに正規化することを決定しますが、元のファイル名はそのままにします(したがって、NFCとNFDの両方がサポートされますが、 Finderでのファイル名またはlsターミナルでのコピー結果、NFD形式を取得します)。

これは、exFATを使用して外付けドライブにNFDファイル名のファイルを配置するまでは(4GB以上のファイルサイズをサポートする唯一のmacOS / Windows形式であるため)、MacOS 10.13はファイルがNFC形式である必要があると信じています。バグアウト。

実際、ここに簡単なテストがあります。WindowsのexFATドライブに3つのファイルを含むフォルダーがあります。

ここに画像の説明を入力してください

  • test.mp3
  • Ēlusion.mp3ĒNFC)
  • 03 - ĒlusionĒNFD内)

ここに正確なユニコードをコピーできます)

macOSにマウントすると、次のようになります。

ここに画像の説明を入力してください

そしてls -laib結果:

$ ls -laib
total 46592
2762318 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 .
2685260 drwxrwxrwx  1 user  staff    131072 Jan  3  2017 ..
1572961 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 Ēlusion.mp3
1572871 -rwxrwxrwx  1 user  staff  11672464 Aug 23  2014 test.mp3

ご覧のとおり、NFCファイルは存在していますが、NFDファイルがありません。

OS XでのNFC / NFDの問題を認識している場合でも、exFAT外部ドライブがこの問題に逆向きに直面するとは思わないかもしれません(NFCは問題ありませんが、NFDはパンツオンファイアです)。

しかし、何が原因で最初に音楽ファイルでNFDファイル名が使用される可能性がありましたか。

  • 最初にこの音楽ファイルを古いMacで10.9 / 10.10にダウンロードし、NFDファイル名を強制しました。
  • ある時点で、それらをWindows + NTFSドライブに移動します。これにより、NFC / NFDは強制されないため、元のNFDファイル名は保持されます。
  • 次に、exFATドライブを使用して、このファイルをmacOS 10.13 + APFSに戻します(exFATはNTFSと同じUTF-16規則をサポートしています)。
  • 地獄がゆるい。

ネットワークドライブまたはTeamViewerを介してファイルをコピーすることもできましたが、問題ありませんが、exFATがmacOSでこのバグを引き起こしています。

レッスン:

  • Unicodeファイル名は依然として脅威です。
  • この問題を解決するには、実際にはWindows / Linuxが必要です(ファイルがexFAT外部ドライブにある場合)。

@bitlinn:duskwulff宛ての私のコメントの2番目のリンクをクリックして、そこにあるApfelstrudelユニコード正規化ツールを試してみてください。APFSに非常に役立ちます。exFATでは無意味です。またはそれは...?
Doc G.

1
@DocG。この問題は最初に思ったよりも少し複雑ですが、もう一度回答を更新しました!
bitinn

ええ、私はあなたがそれをしてしまうかもしれないと思った。Error 36非HFSシステムでのファイル属性の分離の詳細については、以前のコメントを参照し、「ファイルを前後に移動するWindows MACエラー36」のようなものをウェブ検索してください。これは、(別の)System 10.6の登場以来、MacOS / OS Xファイルの命名問題として知られています。Unicodeの正規化とdot_underscore属性の分離の間で、二重のバグが発生しました。dot_cleanコマンドが成功したかどうかは疑問です。
Doc G.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.