Tenho muitos arquivos do meu trabalho como professor que desejo colocar no OneDrive em um backup regular. Meus colegas são ruins em nomear arquivos, então eles precisam de uma limpeza para que o OneDrive possa pegá-los.
A parte que não consigo entender é como selecionar um espaço antes de um ponto final.
Estou tentando isso
bash-3.2$ echo "foo bar .pdf" | tr -s " \." '\.'
e conseguindo isso
foo.bar.pdf
em vez de foo bar.pdf
. O que há de errado com meu comando?
Responder1
tr
substituisolteirocaracteres com caracteres únicos e você disse para substituir cada espaço e cada ponto por ponto (exceto -s
apertar espaço + ponto em uma única entidade para substituir). Em outras palavras, um espaço ou ponto é suficiente para acionar seu arquivo tr
.
Para substituir strings use sed
:
echo "foo bar .pdf" | sed 's/ \././g'
Nota: usei g
porque tr
você usou atos globalmente, então presumi que isso é o que você deseja em geral (não importa para esta string específica foo bar .pdf
).