Removendo o arquivo que não possui permissões e atributos

3

Eu tenho um arquivo no meu disco rígido externo chamado ._Icon ^ M. Acabei com isso depois de usar o meu disco rígido na velha máquina de plataforma Mac. Eu quero excluir este arquivo, mas não consigo.

Para o comando 'ls -al', mostra como

dr-xr-xr-x 1 root root 8192 Mar 6 19:53 ..
-????????? ? ?    ?       ?           ? ._Icon?

Vendo isso, tentei adicionar propriedade (usando chown) e modificar as permissões (usando chmod), mas os comandos não estão reconhecendo ._Icon como arquivo ou diretório.

Eu tentei apagar o arquivo usando o comando -

find . -name '._*' -exec rm '{}' ';'

O rm não pode ser removido, pois não o interpreta como um arquivo ou diretório O console depois de executar o comando acima é

rm: cannot remove './._Icon\r': No such file or directory

Como eu excluo esse arquivo?

    
por ganesh737 06.03.2014 / 15:49

4 respostas

4

Algumas coisas que você pode tentar:

  • Tente concluir o arquivo usando o preenchimento automático da guia. Por exemplo

    rm .[TAB]
    
  • Mova todos os outros arquivos desse diretório para outro local e exclua o diretório. Isso deve se livrar do arquivo.

  • Mova todos os outros arquivos e apenas execute (assumindo o GNU find ) isto:

    find . -type f -delete
    
  • Exclua todos os arquivos no diretório que começam com um ponto:

    rm -r .*
    
  • Obtenha o inode do arquivo e exclua-o usando isso. ls -i deve mostrar-lhe o inode. Alternativamente, execute

    find . -printf "%i %f\n"
    

    Depois de ter o inode, tente excluir usando find novamente:

    find . -inum XXX -delete
    
  • Experimente este script Perl. Altere dirname para o nome do diretório que contém o arquivo e execute-o a partir do diretório pai. Portanto, se o seu arquivo for ~/foo/file , execute isso em ~/ e altere dirname para foo .

    perl  -e 'use File::Path qw(remove_tree); remove_tree("dirname")'
    
por 06.03.2014 / 16:29
1

Pode ser que você não possa removê-lo por causa do caractere CR ( \r ). Você pode tentar com o seguinte:

echo -ne "._Icon\r" | xargs rm

E veja se ele remove.

    
por 06.03.2014 / 16:17
0

Quando tive problemas semelhantes, consegui apagar arquivos por inode

ls -li

primeira coluna é inode

Para excluí-lo

find . -inum num_inode | xargs rm
    
por 06.03.2014 / 16:49
0

Esses sintomas normalmente são causados por não fornecer o nome de arquivo correto para rm(1) . Uma solução é fazer algo como, neste caso:

rm -i .*

(por exemplo, solicite a remoção de todos os arquivos chamados .* , mas peça cada um deles).

Para descobrir qual é o nome exato, ls -ba (dê C escape para caracteres "estranhos", liste todos os arquivos) pode ajudar. Existem outros sinalizadores (GNU) ls que podem ser úteis.

    
por 06.03.2014 / 17:30

Tags