Como renomeio arquivos que possuem '|' neles?

1

Estou usando o Fedora 24.

Eu tentei muitas maneiras diferentes de fazer isso. Eu tentei em uma VM do Windows com a pasta em questão como uma pasta compartilhada.

Eu tentei usar o comando 'Renomear'.

Eu tentei usar o comando 'mv'.

Eu tentei renomeá-los em 'Arquivos'.

Eu tentei definir o nome do arquivo para uma variável com inode e depois renomear. (perdeu a fonte)

26477098 'File | With Pipe.png'
xyz='ls -i|grep 26477098|sed 's/26477098 //''
mv "$xyz" File\ --\ With\ Pipe.png
mv: cannot stat 'File | With Pipe.png': No such file or directory

Eu continuo recebendo o erro 'Não há arquivo ou diretório' da maneira que eu tentei fazer isso.

Eu também tentei renomeá-los usando seu número de inode ( arquivo" mv "com nome ilegível por número de inode? )

26477098 'File | With Pipe.png'
[user@computer Pictures]$ find . -inum 26477098 -exec mv {} File\ --\ With\ Pipe.png \;
mv: cannot move './File | With Pipe.png' to 'File -- With Pipe.png': No such file or directory
[user@computer Pictures]$ find . -inum 26477098 -print0 | xargs -0 mv -t a.png
mv: failed to access 'a.png': No such file or directory

Se eu tentar abrir o arquivo, ele diz "Nenhuma imagem encontrada ..."

Eu estava pensando que talvez eu pudesse linkar o inode e tentar excluir o arquivo original, mas não consigo descobrir uma maneira de fazer isso.

Alguma opinião?

***************************** EDITAR ***************** ********************

[risshuu@centurion Pictures]$ mv "File | With Pipe.png" "File -- With Pipe.png" 
mv: cannot stat 'File | With Pipe.png': No such file or directory
[risshuu@centurion Pictures]$ mv File\ \|\ With\ Pipe.png File\ --\ With\ Pipe.png
mv: cannot stat 'File | With Pipe.png': No such file or directory

Eu tenho alguns desses arquivos, e nenhum deles funciona neles.

Acabei de criar um novo arquivo com um pipe e não tenho nenhum problema em renomeá-lo para não ter o pipe nele. Deve haver algo mais acontecendo também porque eu não posso 'cat' o conteúdo ou abrir o arquivo - eu não posso nem remover nenhum dos arquivos! Existem outros comandos de verificação de arquivos ou algo que eu possa usar ou maneiras de excluir esses arquivos do sistema de arquivos?

    
por Risshuu 29.06.2016 / 14:47

1 resposta

6

Você deve ser capaz de simplesmente escapar do pipe usando uma barra invertida

mv te\|st test

Ou no seu caso com o espaço

mv first\ \|\ last first_last 

Se isso não funcionar, você pode escapar de todos os caracteres especiais, distorcendo-os com aspas duplas.

mv "first | last" first_last
    
por 29.06.2016 / 14:55