Como posso excluir este arquivo? Acho que é um arquivo corrompido em um sistema de arquivos VFAT.
????????? ? ? ? ? ? 100.jpg
Responder1
Uma possibilidade é descobrir o inode
número do arquivo, o que você pode fazer executando ls -i
. Isso retornará duas colunas – a primeira sendo o inode e a segunda sendo o nome do arquivo. Você pode então usar o find
comando para selecionar apenas o arquivo com aquele inode específico e excluí-lo.
sh-4.1$ ls -i .
17921 somefile.ods
169 someotherfile.conf
305 -????????? ? ? ? ? ? 100.jpg
18048 yetanotherfile.jpg
sh-4.1$ find . -maxdepth 1 -inum 305 -ok rm '{}' \;
< rm ... -????????? ? ? ? ? ? 100.jpg > ? y
Como o inode provavelmente é exclusivo do arquivo (assumindo que não há hardlinks), isso permitirá a exclusão sem os riscos inerentes aos curingas. As opções maxdepth
e ok
do comando find apenas tornam ainda menos provável que você acesse o arquivo errado por acidente.
Responder2
Não tenho certeza se alguma das respostas aqui realmente teve o problema relatado por Stig. Acabei de me deparar com esse problema no meu sistema de arquivos ext4:
# ls -l /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
total 0
?????????? ? ? ? ? ? easy-rsa-master
# ls -i /tmp/dependencies/
ls: cannot access /tmp/dependencies/easy-rsa-master: No such file or directory
? easy-rsa-master
# rm -r /tmp/dependencies
rm: descend into directory ‘dependencies’? y
rm: cannot remove ‘/tmp/dependencies/easy-rsa-master’: No such file or directory
rm: remove directory ‘dependencies’? y
rm: cannot remove ‘dependencies’: Directory not empty
O arquivo em si estava corrompido junto com seus atributos de arquivo. ls -i não mostra claramente nenhum ID de inode. Nenhum uso de rm resolverá o problema. Até rm -rf entra no diretório e tenta excluir o arquivo diretamente (e silenciosamente).
Minha solução foi recriar o diretório sem o arquivo incorreto. Então você pode mover o diretório para outro local, como/tmp. Ele desaparecerá após uma reinicialização ou sempre que sua distribuição limpar o diretório /tmp (espero).
Responder3
Eu recomendaria uma versão um pouco mais defensiva da sugestão de cHao:
rm -i ./*100.jpg*
Os -i
fabricantes rm
perguntam se você deseja ou não excluir cada arquivo que corresponda ao curinga; isso garante que você também não excluirá acidentalmente outros arquivos. E o líder ./
garante que todos os nomes de arquivos serão tratados comonomes de arquivose não outras opções rm
(parece que você pode ter um traço inicial, é por isso que isso é importante).
É possível, aliás, que existam personagens invisíveisdentroa string "100.jpg". Se a mensagem acima fornecer uma mensagem de erro como " rm: ./*100.jpg*: not found
", é por isso. ls -1fw | cat -v
pode ser útil.
Responder4
Você pode tentar
rm *100.jpg*
Os ?'s são pontos de interrogação literais ou caracteres que não fazem sentido. De qualquer forma, o próprio sistema operacional (e o shell) geralmente pode remover o arquivo, se o sistema de arquivos não estiver conectado.
Se o sistema de arquivosébagunçado, porém, excluir coisas pode piorar a situação. Eu recomendo que você inicialize no Windows para verificar a unidade e exclua o arquivo, se puder.