Removendo um arquivo quando 'rm' diz que ele não existe, mas não

1

Estou tentando excluir uma pasta minha pasta de coleção de músicas. Com o comando

ls -al /mnt/media/Music/

Eu posso ver a pasta - só que ela tem um ? no final do nome, então é assim:

drwxrwxr-x 1 reuben reuben    0 Mar  3 15:24 Twin Shadow - Eclipse (2015) [FLAC]?

mas quando tento eliminá-lo com este comando:

rmdir /mnt/media/Music/Twin\ Shadow\ -\ Eclipse\ \(2015\)\ [FLAC]\?/

Então eu entendo isso:

rm: cannot remove '/mnt/media/Music/Twin Shadow - Eclipse (2015) [FLAC]?/': No such file or directory

Estou confuso; o que estou perdendo? Espero que não seja algo realmente óbvio!

    
por Reuben DeVries 04.03.2017 / 00:58

1 resposta

3

De longe, a maneira mais fácil de lidar com nomes de arquivos como este no terminal é fazer uso do recurso de conclusão da guia do shell: digite o suficiente do nome para ser não ambíguo, por exemplo.

rmdir /mnt/media/Music/Twin\ Shad

e, em seguida, pressione TAB

A segunda maneira mais fácil - pelo menos se o nome não contiver citações - é citar a coisa toda, por exemplo.

rmdir '/mnt/media/Twin Shadow - Eclipse (2015) [FLAC]?'

(aspas duplas também devem funcionar neste contexto).

Se você realmente precisar usar escapes de barra invertida, os dois parênteses e colchetes são metacaracteres de shell e também devem ser escapados, por exemplo

rmdir /mnt/media/Music/Twin\ Shadow\ -\ Eclipse\ \(2015\)\ \[FLAC\]\?/

(o - não precisa ser ignorado - embora não seja ruim fazê-lo).

    
por steeldriver 04.03.2017 / 02:44