Não parece que a desintoxicação tenha uma opção para isso. Deve ser bastante simples modificar o código-fonte para adicionar um filtro com a saída desejada (uma pequena modificação do filtro safe ; não se esqueça de garantir que qualquer - inicial seja removido).
Você pode pós-processar o resultado de detox ou usar outras ferramentas completamente. Existem muitas ferramentas de renomeação de arquivos que são mais flexíveis.
O comando Perl renomear (não deve ser confundido com o util-linux rename command) suporta a conversão de nomes de arquivos com código Perl arbitrário. Este comando está disponível como rename no Debian e derivados (Ubuntu, Mint,…). Está disponível no Arch como perl-rename . Se você quiser apenas alterar _ para - e remover o - , poderá usar:
rename 's/_/-/g; s/\A-*//' *
Isso afeta apenas arquivos (exceto arquivos de ponto) no diretório atual. Para agir em um diretório recursivamente, combine isso com o comando find .
find . -depth -exec rename 's/_/-/g; s/\A-*//' {} +
Outras características da desintoxicação podem ser expressas em Perl, a maioria delas com o operador s/PATTERN/REPLACEMENT/ . Por exemplo, para reter apenas letras e dígitos e substituir qualquer sequência de outros caracteres por - , você pode usar
rename 's/[^[:alnum:]]+/-/g; s/\A-//' …
Se você quiser caracteres Unicode aproximados com ASCII , você pode usar Text :: Unidecode :
perl -C -MText::Unidecode /usr/bin/rename '$_ = unidecode($_)' …
Outra poderosa ferramenta de renomeação é o comando zmv da zsh shell. Primeiro, execute isso (coloque-o no seu ~/.zshrc para uso interativo):
autoload -U zmv
Para alterar _ para - e remover a faixa - , você pode usar:
zmv '**/*' '$f:h/${${f##*/-#}//_/-}'
O padrão **/* faz este comando agir em subdiretórios do diretório atual de forma recursiva.