Use apenas rm -i <wildcard>
...
(py26_dfl)[mpenning@Bucksnort ~]$ rm -i *ng
rm: remove regular file 'IMAG0004-1.png'? n
rm: remove regular file '??????????.png'? y
(py26_dfl)[mpenning@Bucksnort ~]$
Eu tenho um arquivo com o nome como ?????????????????????? ???????????????????????? ??????????.png
no meu diretório. Parece-me que o arquivo foi criado em janelas com nome russo. Eu puxei com git e agora não consigo compilar meu programa. E eu não consigo deletá-lo no debian.
rm: cannot remove '??????????????????????': No such file or directory
rm: cannot remove '????????????????????????': No such file or directory
rm: cannot remove '??????????.png': No such file or directory
Eu tentei usar aspas em torno do nome do arquivo, mas não funciona.
Como deve excluir arquivos com nomes como este?
O uso de curingas, como sugerido em outra resposta , é geralmente o modo mais rápido de selecionar um subconjunto de arquivos de seu diretório, mas nem sempre é possível usá-lo (por exemplo, no caso anterior, pelo menos você tem o sufixo de extensão em caracteres compreensíveis ).
rm -i *ng # means remove all files that finish for ng
Outra maneira pode ser usar o número inode do arquivo.
Com um ls -i
você terá a lista dos arquivos no diretório atual com o número do inode seguido do nome do arquivo. Segue um exemplo, obtido com ls -i1
apenas para ter a saída com um arquivo para cada linha:
14549004 Various_Command_.sh
14549512 Convert_Scan_Png_To_Jpg.sh
14579439 FILE_TO_DELETE
Depois que você pode excluir ou mover ou executar qualquer comando desejado, selecione o arquivo pelo número do inode . Por exemplo: para remove
o arquivo FILE_TO_DELETE
com o inode number 14579439 é possível escrever:
find . -inum 14579439 -exec rm -i {} \;
Nota: a opção -i
após o comando remove existe para forçar o sistema a solicitar antes de cada remoção.
Para o uso de encontrar você pode ler a página man ou pesquisar na web alguns tutorial .