Como deletar arquivos começando com # usando “rm # *”?

0

No bash, quero excluir os arquivos que começam com # . Eu tentei rm #* , mas recebi a mensagem: rm: missing operand .

Então, como conseguir isso?

    
por lanselibai 19.01.2018 / 19:13

4 respostas

6

O octothorpe ( # ), ou sinal de libra, é um caractere de comentário, descrito no POSIX gramática aqui como dizendo:

If the current character is a '#', it and all subsequent characters up to, but excluding, the next <newline> shall be discarded as a comment. The <newline> that ends the line is not considered part of the comment.

Então você precisa citar ou escapar do sinal de libra para que não seja interpretado como um comentário:

rm '#'*

ou

rm "#"*

ou

rm \#*
    
por 19.01.2018 / 19:34
3

Enquanto o # inicia um comentário, ele apenas o faz no início de uma palavra. Portanto, o prefixo de um caminho, como ./ para o diretório atual, também funciona para desativá-lo.

rm ./#*

Por acaso, o prefixo ./ também é uma das duas maneiras de evitar nomes de arquivos que começam com um traço.  ( -like-this ) sendo interpretado como opções para o comando.

    
por 19.01.2018 / 19:54
3

Se o seu shell for bash , você poderá desativar o uso de # como um caractere de comentário em um shell interativo com

shopt -u interactive_comments

Com esta opção de shell limpa,

rm #*

deve funcionar como você esperava inicialmente, sem a necessidade de escapar do # .

    
por 19.01.2018 / 19:54
0

dependendo da configuração do shell que você pode usar

rm \#file

ou

rm '#file'

ou se for um caractere especial interpretado e exibido como #, então

rm ?file

poderia funcionar

    
por 19.01.2018 / 19:15