Acessando um arquivo “sem nome”

4

Eu tenho essa situação em um determinado diretório:

$ ls -al
...
drwxr-xr-x   2 me users         8192 Juni 28 15:27 tmp
-rw-r--r--   1 me users          439 Jan.  3  2013
...

Como posso acessar a segunda entrada, que parece não ter nome de arquivo?

    
por alk 21.08.2013 / 10:16

2 respostas

7

Uma amostra de corrida para criar um arquivo chamado "non breaking space" e renomeá-lo:

$ ls -1 # Each file on a separate row
testfile
$ touch   # I'm actually writing the character u00a0 here
$ ls -1
testfile
 
$ ls -i # Print inodes
2031842 testfile
2023653  
$ find . -maxdepth 1 -inum 2023653 -exec mv {} hithere \;
$ ls -i1
2023653 hithere
2031842 testfile

O exec em sua forma só faz sentido se houver apenas uma única correspondência, mas o número do inode deve ser exclusivo nessa partição, a menos que existam links físicos para o mesmo arquivo. Você pode testar isso executando a pesquisa sem argumentos primeiro para ver se consegue várias correspondências. Se esse for o caso, você pode, por exemplo refine o padrão find para corresponder apenas ao arquivo desejado.

Como a renomeação não depende dos caracteres exatos do nome do arquivo, não deve haver problemas em inserir códigos estranhos.

    
por 21.08.2013 / 11:59
2

Eu tentaria "ls -1a > / tmp / list" e o hexdump para ver se algo aparece. É possível que o nome do arquivo seja uma sequência de espaços e tabulações. Se o hexdump mostra o nome do arquivo como espaços (digamos 1 espaço), então faça um "mv \ somename"

ls -1

ls -1 > /tmp/list
cat /tmp/list

hexdump /tmp/list
          00 01 02 03 04 05 06 07 - 08 09 0A 0B 0C 0D 0E 0F  0123456789ABCDEF

00000000  20 0A     {------                                          .
mv \  new        {------
ls -1
new
    
por 21.08.2013 / 11:47