Como apagar arquivos contendo caracteres especiais no Linux?

2

Eu criei um arquivo bash do Linux em um editor de texto do Windows. Este arquivo continha comandos para mover arquivos para outro local no linux.

Depois de executar este arquivo, descobri que os arquivos de destino têm o símbolo "\ r" no final. (Eu acho que isso é porque o Linux e Windows usam diferentes símbolos de fim de linha)

O comando 'Dir' mostra que eu tenho arquivos como estes: "httpd.conf \ r" enquanto 'ls' mostra o mesmo nome de arquivo como: "httpd.conf?"

Como faço para excluir esses arquivos?

Estes comandos não funcionam:

Rm httpd.conf\r
Rm httpd.conf\r
rm 'httpd.conf\r'

Eu recebo o seguinte erro:

rm: cannot lstat 'httpd.confr': Nenhum arquivo ou diretório desse tipo

    
por Termos 22.11.2010 / 10:51

5 respostas

5

A maneira mais simples seria:

rm -i httpd.conf?
    
por 22.11.2010 / 10:52
2

Se você obtiver um nome de arquivo realmente chewy, você pode excluí-lo por inode: execute ls -il para obter o número do inode e use: find -inum <inode number> -exec rm -i {} \; para excluí-lo.

(crédito para um dos meus favoritos antigos para este: link )

    
por 22.11.2010 / 11:02
2

Se você estiver usando bash e bash, o tab complete está ativado, você pode usá-lo para completar o nome do arquivo com o caractere em questão automaticamente escapado.

    
por 22.11.2010 / 11:04
1

Suponha que você tenha dois arquivos no mesmo diretório: httpd.conf e httpd.conf\r .

Copie o (s) arquivo (s) que você deseja manter:

$ sudo cp httpd.conf httpd-keep.conf

Basta remover os arquivos ALL que começam com httpd.conf:

$ sudo rm httpd.conf*

Restaurar o arquivo original:

$ sudo mv httpd-keep.conf httpd.conf

Você precisa fazer backup de todos os outros arquivos que começam com "httpd.conf", se houver, antes de executar o comando rm , conforme mostrado acima.

    
por 22.11.2010 / 11:09
1

Você pode fazer:

rm $'httpd.conf\r'

ou

rm 'httpd.conf^M'

Você obtém ^M pressionando Ctrl - v e então Ctrl - m .

    
por 22.11.2010 / 12:30

Tags