Expansão da cinta Bash para remover parte do nome do arquivo

6

É possível remover em vez de adicionar substring a um nome de arquivo usando a expansão de chave bash?

Considerando o seguinte cenário, é possível adicionar um sufixo a um nome de arquivo usando a técnica abaixo:

mv offlineimap.conf{,.minimal}

O que ele faz é renomear offlineimap.conf para offlineimap.conf.minimal , o que é muito útil esp. para fazer arquivos de backup (por exemplo, swith .bak extension).

Mas também é possível subtrair substrings de nomes de arquivos, assim:

mv offlineimap.conf.minimal{,-minimal}

Aqui eu uso - como um caractere especial hipotético para subtrair a substring.

Espero que a segunda técnica resulte em offlineimap.conf remover o sufixo .minimal do nome de um arquivo existente.

    
por w17t 12.05.2017 / 22:17

2 respostas

14

Para usar um comando de chave para remover um sufixo, como .minimal do arquivo offlineimap.conf.minimal , use:

mv offlineimap.conf{.minimal,}

Mais sobre a expansão de chaves

A ideia aqui é que a expansão de contraventamento cria uma série de strings usando a lista de strings separadas por vírgulas entre as chaves:

$ echo a{b,c}
ab ac

Na sua primeira utilização, a primeira das duas cadeias está vazia:

$ echo a{,c}
a ac

Na solução desejada, nós a alternamos para que a segunda das duas cadeias esteja vazia:

$ echo a{b,}
ab a

Ou:

$ echo offlineimap.conf{.minimal,}
offlineimap.conf.minimal offlineimap.conf
    
por 12.05.2017 / 22:20
2

Além da resposta do John1024 (não é possível comentar).

Tentei este método e encontrei um atalho:

  1. Digite o nome completo do arquivo, que precisou ser cortado, usando o autocompletar - pressionando a tecla tab.

    offlinei(tab key pressing) -> get full name -> offlineimap.conf.minimal

  2. digite ,} e, em seguida, retroceda uma palavra ( Alt + b no bash) e insira { ,

E precisamos da construção necessária offlineimap.conf.{minimal,}

    
por 12.05.2017 / 23:16