Este script facilita muito a eliminação de espaços em branco nos nomes de arquivos, para que estes arquivos possam ser utilizados por outros comandos que não aceitam espaços em branco em nomes de arquivos, como o comando gs e outros comandos.
Notas:
Este script é muito bom e seguro para eliminar o espaço em branco do nomes de arquivos, pois é aplicado somente ao arquivo especificado, outros comandos para a mesma finalidade costumam eliminar os espaços em branco de todos os nomes de arquivos, sem exceção e até de subdiretórios.
Ele facilita muito a vida de quem costuma imprimir páginas HTML em PDF utilizando a extensão PrintPDF para Firefox, pois pode-se reduzir o arquivo PDF gerado para que fique bem menor utilizando o comando gs (que não aceita arquivos com espaços em branco no nome).
Truque
Com este script você pode eliminar os espaços em branco dentro de qualquer gerenciador de arquivos sem precisar usar janela de terminal, basta que o mesmo tenha a opção "Abrir com...". Basta selecionar esta opção e escolher outro aplicativo, desmarque a opção "Usar como padrão" ou "Associar" caso tenha essas duas últimas opções, digite semespaco e clique em OK, e pronto os espaços do nome do arquivo serão substituídos pelo caractere sublinhado.
Obs.: este procedimento não funciona com pastas dentro do gerenciador de arquivos.
# Script para remover espaço em branco em nomes de arquivo, substituindo os espaços pelo
# caractere sublinhado.
# Funciona apenas com um arquivo por vez ou diretório devido ao script.
# Não funciona corretamente com caractere curinga, como *.txt devido a variavel $1.
# O arquivo com espaço no nome deve ser especificado entre aspas duplas.
# Exemplo: semespaco "Teste de qualidade.doc"
# resultado: Teste_de_qualidade.doc
# O comando renome faz parte do sistema, encontrado nas distros ubuntu.
#
# Para remover os espaços de vários arquivos, usando curinga, usar diretamente
# no terminal: rename -v 'y/ /_/' *.txt
#
#
rename -v 'y/ /_/' "$1"
[5] Comentário enviado por leojaco25 em 05/07/2016 - 17:32h
Pessoal, boa tarde.
Tenho um problema com alguns arquivos. Estou fazendo o mv com o "find /diretório -mtime +9 |while read file". Contudo, os arquivos possuem a seguinte nomenclatura "999999 (diamesano-cepini-cepfim).zip". Testei renomear, tirando o " " e os parenteses, porém o processo não funciona. Se uso o "|tr", dá o erro "tr: when not truncating set1, string2 must be non-empty". Se uso o "rename", não dá nenhum erro, mas também não renomea. Segue o script que fiz para testar:
----------------------------------------------------------
find /tmp/*.zip -mtime +1 |while read line
do
echo $line
rename -v 'y/ /_/' 'y/\(//' 'y/\)//' "$line"
done
----------------------------------------------------------
Mesmo se eu uso somente "rename -v 'y/\ /_/' "$line" nada acontece. Alguém tem alguma sugestão? Preciso tirar o espaço e os parênteses do nome dos arquivos.
[6] Comentário enviado por goll72 em 20/12/2020 - 20:48h
Há algum programa CLI que não aceita espaços em nome de arquivos? Se você utilizar aspas ao redor do nome (ex. ls "./diretório 1") ou se usar a backslash para "escapar" os espaços (ex. ls ./diretório\ 1) o nome será interpretado da forma correta.