Como alterar o uso padrão da desintoxicação, de modo que não substitua espaços por sublinhados

1

Estou feliz com o uso padrão de desintoxicação para limpar nomes de arquivos, exceto que nem sempre quero para substituir espaços em branco com um único sublinhado. Gostaria de substituir os espaços em branco por um único espaço.

Sabe como fazer isso?

    
por fullmooninu 05.01.2016 / 17:32

2 respostas

0

Não estou familiarizado com detox , mas sei que você pode usar tr para converter seus nomes de arquivo da seguinte forma:

$ echo "a_b__c" | tr -s '_' ' '
a b c

$ echo "a b    c" | tr -s ' '
a b c

Obviamente, substitua o comando echo pela sua linha detox .

    
por 05.01.2016 / 17:57
0

Não estou familiarizado com a desintoxicação, mas há outras formas de renomear em massa arquivos mais flexíveis.

Com o utilitário de renomeação baseado em Perl (uma versão dele está disponível como rename no Debian e derivados, e como prename em algumas outras distribuições), você pode especificar um código Perl arbitrário para renomear arquivos. Por exemplo, isso substitui qualquer sequência de espaços em branco por um único espaço em todos os nomes de arquivos no diretório atual:

rename 's/\s+/ /g' *

Isso também remove os espaços em branco da pontuação e substitui qualquer outra sequência de pontuação e espaços, exceto . , por um sublinhado.

rename 's/\s* \s*/ /g; s/\s*([^[:alnum:]_. ])[^[:alnum:].]//g' *

Se você usa zsh como seu shell, pode usar a sua interessante função zmv . Coloque autoload -U zmv no seu .zshrc . Isso comprime vários espaços em um único espaço nos nomes de arquivos no diretório atual:

zmv '*' '${f//  ##/ }'
    
por 06.01.2016 / 01:29