não pode remover o arquivo com retornos de carro

1

Eu tenho um arquivo blahblah\r\n.txt que desejo remover, mas rm blahblah\r\n.txt não funciona, pois recebo No such file or directory message.

Como remover ??

    
por zoltar 28.10.2015 / 23:09

5 respostas

2

Você pode colocar uma string em $'' para permitir a interpretação de sequências de escape (neste caso, para permitir a interpretação de \r ):

rm $'file\rwith_carriage_return'
% touch $'file\rwith_carriage_return'
% ls
file?with_carriage_return
% rm $'file\rwith_carriage_return'
% ls
% 
    
por 28.10.2015 / 23:34
0

Eu removi com rm *.* , no entanto, ainda gostaria de saber por que rm blahblah\r\n.txt e rm blahblah*.txt não funcionam ..

    
por 28.10.2015 / 23:20
0

Dos vários métodos disponíveis, um é encontrar o número do inode e, em seguida, eliminar isso.

$ mkdir -p ~/tmp/asdf
$ cd !$
cd ~/tmp/asdf
$ touch 'head -c 32 /dev/random' # newlines are boring
$ find . -type f -ls
5636303    0 -rw-r--r--   ...
$ find . -maxdepth 1 -inum 5636303 -exec rm '{}' \;
    
por 28.10.2015 / 23:22
0

Deve ser possível excluir o arquivo se você escapar do nome do arquivo: rm 'bla\n.txt'

Mas, se isso não funcionar, tente excluir pelo número do inode:

ls -i bla*
1234 bla\n.txt
find . -inum 1234
#make sure the right file and only the right file is returned then
find . -inum 1234 -delete
    
por 28.10.2015 / 23:28
0

Normalmente, quando me deparo com situações desse tipo, faço o seguinte ...

EX: Suponha que eu tenha o arquivo 'xxx \ nyyy'

Eu sei que começa com 'xxx' .....

Eu uso o comando:

 rm -i xxx*

E exclua o arquivo RIGHT quando for perguntado se você deseja excluir um arquivo ou não.

    
por 28.10.2015 / 23:32