ls: não pode acessar 'filename': Nenhum arquivo ou diretório (mas existe um arquivo)

0

Unidade formatada para HFS + conectada a uma caixa do Ubuntu por meio de uma base SATA / USB.

Não há problemas relatados para a partição por fsck.hfsplus.

A tentativa de executar "ls" (ou qualquer outra coisa) nos arquivos afetados resulta em "nenhum arquivo ou diretório". Executar "ls -lh" na pasta do contêiner gera a mesma reclamação, mas ainda mostra o arquivo na lista, mas com o seguinte formato:

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

Não estou preocupado com a propriedade de discagem 501: dos outros arquivos (a unidade é de uma máquina diferente).

Existem alguns arquivos que estão sendo afetados por isso. Eles só parecem ser arquivos com Unicode e / ou Emoji no nome.

Eu tentei:

  • "ls" com as opções "-b" e "-q", mas nenhuma delas revelou nada
  • "ls -lh > ~ / tmp.txt" e edição em "vi" em uma tentativa de detectar bytes estranhos no nome
  • "raiz do usuário: nome do arquivo raiz"
  • "chmod 644 nome do arquivo"

O arquivo aparece na saída de "ls" e o preenchimento de tabulação também o preenche. Mas qualquer tipo de interação real falha.

Alguém capaz de oferecer alguma orientação? Em última análise, eu quero ser capaz de rsync / scp esses arquivos para outra caixa (que infelizmente não joga muito bem com o berço da unidade) e eu percebi que ser capaz de ls / mv seria um bom ponto de partida.

EDIT: Usando o bash. O preenchimento de tabulação preenche o nome completo do arquivo, embora com algum '???' no lugar de certos personagens (inseguro dos caracteres originais neste momento). Localidade na caixa de fontes:

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=
    
por David Young 22.06.2017 / 07:32

1 resposta

0

O macOS pode codificar nomes de arquivos em UTF16 no HFSplus e isso significa que você está sem sorte, já que o Linux não tem localidades UTF16. Basicamente, sua localidade é UTF8 e não mostra caracteres específicos, há uma grande chance de serem caracteres UTF16.

Sinto muito por você.

    
por 26.06.2017 / 14:00

Tags