Quatro coisas:
Experimente o complemento da solução - mova tudo o mais e remova tudo.
mkdir ../everything_else
mv problematic/folder/path/* everything_else
sudo rm -rf problematic/folder/path
Verifique se não há nenhuma ACL no arquivo e remova qualquer problema que possa estar causando isso:
$ /bin/ls -le problematic/folder/path
total 16
-rw-r--r--+ 1 whmcclos staff 1918 Dec 18 09:00 README
0: user:_spotlight inherited allow read,execute,readattr,readextattr,readsecurity
$ chmod -a "..."
Tente um script Perl para suavizar as dependências de nomes do OS / FS?
Por exemplo, algo nos moldes deste fragmento de código - mantenha o nome do arquivo em anônimo $ _:
$ mkdir fred; cd fred; touch a b c d e f
$ cat > try.pl
#!/usr/bin/perl
opendir(D,".") or die "cannot open .\n";
@files=readdir(D);
closedir(D);
foreach (@files) {
next if /\.{1,2}/; # Skip directory entries
print; print "? "; $r = <>; chop($r); # Provide some level of control
if($r eq "y" or $r eq "Y") {unlink;} # Should report if cannot unlink unnamed file - tbd.
}
^D
$ /usr/bin/perl try.pl
a?
b?
c? y
d?
e?
f?
$ ls
a b d e f try.pl
[Atualizado para refletir a intenção original do autor - copie a besta para um arquivo bem comportado (nome):]
Para ver se o Perl pode copiar o arquivo comportado incorretamente para um arquivo bem comportado, eu usaria o script Perl abaixo - ainda ao longo das linhas acima - deixe o Perl acessar "anonimamente" o nome do arquivo.
(Além disso, a ACL deve realmente ser verificada; a ACL pode até impedir que o root acesse normalmente o arquivo como root, pelo que me lembro de ter lidado.]
Aqui está o script Perl:
$ cat try3.pl
#!/usr/bin/perl
# A code fragment to ask to copy a displayed file to $TO; chg $TO on next line:
$TO="my_new_behaved_filename"; # This is the name that will be copied to
opendir(D,".") or die "cannot open .\n";
@files=readdir(D);
closedir(D);
foreach $f (@files) {
next if $f =~ /\.{1,2}/; # Skip directory entries, "." & ".."
print "$f? "; $r = <>; chop($r); # Provide some level of control; "y" or "Y"
if($r eq "y" or $r eq "Y") { # to copy the displayed filename to $TO
print "copying it to $TO...\n";
# Now, see if we can copy the darn thing to $TO:
open(FROM,$f) or die "sorry - couldn't open it...";
open(TO,">$TO");
while(read FROM, $buf, 16384) {
print TO $buf;
}
close(TO);
close(FROM);
}
}
Que você usaria como tal, assumindo que o try3.pl é o script Perl mencionado acima:
$ ./try3.pl
a?
b?
d? y
copying it to my_new_behaved_filename...
e?
f?
Acesse o arquivo por meio de um link simbólico ou físico e veja a milhagem que você recebe.
Eu usaria a expansão do nome de arquivo [tab] do vi para tentar "identificar" no shell que arquivo você deseja vincular.
Mudei meu ~ / {.vim, .viminfo, .vimrc} para o lado para restringir as coisas, como a entrada do wildmenu. Você pode querer fazer o mesmo.
Agora, inicie a seguinte seqüência de linha de comando na pasta que contém o arquivo falso:
$ vi
No vi, digite com precisão essa sequência de caracteres
!!ln -s [tab]
Essa sequência de teclas era, em palavras: ponto de exclamação, ponto de exclamação, el, en, branco, traço, es, em branco, tab. Assim que você pressionar a tecla [tab], o primeiro arquivo do diretório de trabalho atual deve ser exibido após o caractere em branco (seguindo o "s") na linha de status do vi. Pressione a tecla [tab] várias vezes para percorrer o nome do arquivo falso. Quando o nome do arquivo falso aparecer, pressione a barra de espaço para adicionar um espaço e, em seguida, digite um novo nome de arquivo / link.
O resultado na linha de status do vi deve ser parecido com isto
!!ln -s bogus_filename new_sym_link_name
Pressione a tecla return para ver se o comando link (gerado do vi substitui a linha nula atual no buffer vazio do vi, que não nos importamos aqui; queremos o efeito colateral de executar um comando shell com tab expansão) criará o link new_sym_link_name.
Saia do vi com: q! [return], e veja se consegue acessar seu arquivo através do link simbólico.
(Você também pode tentar um link físico deixando os -s no comando ln acima.
Porque eu notei que você poderia mudar o nome do arquivo através do Windows, estou pensando que de alguma forma, uma seqüência de alimentação de linha de retorno de carro entrou no nome do arquivo, e isso está confundindo as várias abordagens.