ls: 'filename' にアクセスできません: そのファイルまたはディレクトリはありません (ただし、ファイルは存在します)

ls: 'filename' にアクセスできません: そのファイルまたはディレクトリはありません (ただし、ファイルは存在します)

HFS +フォーマットドライブはSATA / USBドックを介してUbuntuボックスに接続されています。

fsck.hfsplusでは分割の問題は報告されていません。

影響を受けるファイルに対して「ls」(または他のエントリ)を実行しようとすると、「該当するファイルまたはディレクトリがありません」というメッセージが表示されます。コンテナフォルダで "ls -lh"を実行すると同じ問題が発生しますが、ファイルはまだリストに表示されますが、次の形式で表示されます。

-rw-r--r-- 1 501 dialout   53M Mar  4 15:26 normal_file
-????????? ? ?   ?           ?            ? uncooperative_file

私は他のファイルの501:dialoutの所有権を気にしません(ドライブは別のコンピュータにあります)。

これにより影響を受けるファイルがいくつかあります。名前にUnicodeおよび/または絵文字を含むファイルのようです。

私は試した:

  • 「ls」は「-b」および「-q」オプションを使用しますが、何も表示しません。
  • 「ls -lh > ~/tmp.txt」と入力し、「vi」を編集して名前から不要なバイトを検出します。
  • "chown root: root ファイル名"
  • 「chmod 644ファイル名」

ファイルは「ls」の出力に表示され、タブの完成もそれを埋めます。しかしどんな種類でも実際対話に失敗しました。

誰でも指示を提供できますか?結局のところ、このファイルを別のボックスにrsync / scpすることができるようにしたいと思います(残念ながらドライブマウントでは正しく機能しません)、ls / mvを実行できるのは良い出発点になると思いました。

編集:bashを使用してください。タブ補完は完全なファイル名を埋めますが、一部の文字の代わりに「???」が含まれます(現在の元の文字についてはわかりません)。ソースボックスのロケール:

LANG=en_CA.UTF-8
LANGUAGE=en_CA:en
LC_CTYPE="en_CA.UTF-8"
LC_NUMERIC="en_CA.UTF-8"
LC_TIME="en_CA.UTF-8"
LC_COLLATE="en_CA.UTF-8"
LC_MONETARY="en_CA.UTF-8"
LC_MESSAGES="en_CA.UTF-8"
LC_PAPER="en_CA.UTF-8"
LC_NAME="en_CA.UTF-8"
LC_ADDRESS="en_CA.UTF-8"
LC_TELEPHONE="en_CA.UTF-8"
LC_MEASUREMENT="en_CA.UTF-8"
LC_IDENTIFICATION="en_CA.UTF-8"
LC_ALL=

ベストアンサー1

macOSはHFSplusでファイル名をUTF16にエンコードできます。これはLinuxにUTF16ロケールがないため運がないことを意味します。デフォルトでは、ロケールはUTF8であり、特定の文字を表示しません。これらの文字はUTF16文字である可能性が高いです。

本当にダメだ。

おすすめ記事