Eu posso garantir que o arquivo tem um nome. Apenas é um nome que contém caracteres não imprimíveis.
Se rm
não funcionou, usar a saída de find
com a opção -inum
como argumento para rm
provavelmente não ajudará; vai passar o mesmo argumento para rm
, com o mesmo problema.
O arquivo é o único desse diretório, certo?
A primeira coisa que eu tento é cd
no diretório, então digite rm ./
, então aperte a tecla Tab. Isso deve expandir o argumento para o nome real do arquivo, e o ./
anterior deve impedir que rm
interprete o argumento como algo diferente de um nome de arquivo.
Outra solução é cd
para o diretório pai e, em seguida, use rm -r
(ou, se necessário, rm -rf
) no diretório. Isso deve remover o diretório e todo o seu conteúdo, independentemente do nome. Você pode usar mkdir
para recriar o diretório (e talvez chmod
para restaurar suas permissões).
EDITAR:
Olhando sua saída ls -lb
novamente, acho que o nome do arquivo começa com um caractere ASCII DEL
(que é ruim, não não fatal) e contém um ou mais caracteres de nova linha (que é muito ruim). Tanto quanto eu posso dizer, o comando rm
não pode interpretar uma nova linha como parte de um nome de arquivo.
Mas a chamada do sistema unlink()
pode. Aqui está um script em Perl que eu joguei juntos que irá percorrer os arquivos no diretório atual, e pedir-lhe para cada um se você deseja removê-lo. Ele não usa um comando externo como rm
para remover os arquivos, portanto deve ser capaz de manipular quaisquer caracteres engraçados que o sistema de arquivos suportar (qualquer coisa diferente de ASCII NUL
e /
).
Fazer rm -r
ou rm -rf
no diretório que contém ainda deve funcionar, mas se você quiser apenas remover um único arquivo, tente isso.
#!/usr/bin/perl
use strict;
use warnings;
opendir my $DIR, '.' or die ".: $!\n";
my @files = sort grep { -f } readdir $DIR;
closedir $DIR;
foreach my $file (@files) {
my $pfile = printable($file);
print "Remove $pfile? ";
my $answer = scalar <STDIN>;
if ($answer =~ /^[Yy]/) {
print "Removing $pfile\n";
unlink $file or warn "Unable to remove $pfile: $!\n";
}
}
sub printable {
my($s) = @_;
$s =~ s/[^ -~]/?/g;
return $s;
}
(Outra solução, se houver outros arquivos no diretório que você deseja manter, é mover todos os outros arquivos para um diretório temporário, em seguida, fortaleça e recrie o diretório e mova os outros arquivos de volta.)
(Ah, e o que você fez para criar esse arquivo, tente não fazer isso de novo!)