função para remover automaticamente caracteres especiais de nomes de arquivos durante o salvamento no MacOS X

3

Frequentemente, estou criando arquivos PDF a partir de páginas da Web no MacOS X (10.6) e frequentemente tenho o problema de que o nome do arquivo proposto automaticamente (com base no nome da página da Web) contém muitos caracteres especiais.

Então, eu me pergunto: existe uma maneira fácil (script da Apple, shell script, serviço OS X) que pega uma string (como esse nome de arquivo) e a converte por

  • removendo todos os espaços e outros caracteres especiais (também aqueles que podem ser permitidos no OS X, mas proibidos no Windows ou no Linux !! já que estou transferindo arquivos para nosso PC com frequência)
  • talvez começando cada palavra (depois de um espaço removido) com uma letra maiúscula
  • ... o que mais poderia ser importante?

Estou usando o Quicksilver, então talvez seja possível criar um comando que torne possível substituir a seleção de texto atual (no arquivo salvar como ... diálogo) por uma string convertida.

    
por MostlyHarmless 11.03.2012 / 13:37

2 respostas

4

Você pode criar um serviço do Automator para fazer isso em todos os aplicativos que suportam serviços (que são quase todos eles).

Abra o Automator e selecione para criar um Serviço que receba texto selecionado em qualquer aplicativo e verifique A saída substitui o texto selecionado .

Adicione uma única ação Executar script shell da biblioteca e cole o seguinte código de script:

sed 's|[^a-zA-Z0-9]||g'

Esse script específico, uma simples substituição sed , removerá todos os caracteres não alfanuméricos do nome do arquivo. Ele usa a-zA-Z0-9 como lista branca de caracteres permitidos, adicione a ele conforme desejado.

Você também pode realizar outras ações e agrupá-las. Por exemplo, tr [A-Z] [a-z] diminuirá tudo e sed 's|[^a-zA-Z0-9]||g' | tr [A-Z] [a-z] combinará os dois.

Salvar como por exemplo Sanitize Filename e, opcionalmente, atribuir um atalho de teclado em Preferências do Sistema »Teclado» Atalhos de Teclado »Serviços . Você deve ser capaz de chamar serviços usando o Quicksilver também, apenas digite o nome deles.

Sempre que você estiver em um Salvar como ... ou caixa de diálogo semelhante, selecione o nome do arquivo sugerido (ele é selecionado por padrão):

InvoqueoserviçoMenudoPrograma»Serviços»SanitizeFilename(ouuseoatalhodetecladoquevocêchamou).Eleiráenviaronomedoarquivoatravésdoscripteusarsuasaídaparasubstituiraseleção.

Para criação de título e remoção de caracteres ruins (também mantenho sublinhado, ponto e hífen em), o seguinte código de script parece funcionar principalmente para mim:

perl -ane 'foreach $wrd(@F){print ucfirst($wrd)." ";}' | sed 's|[^a-zA-Z0-9_.-]||g'

    
por 11.03.2012 / 14:00
3

Mesma ideia que Daniel tinha. Crie um Serviço no Automator . Substitua o shell Executar Shell Script por /usr/bin/ruby e adicione o seguinte:

input, output = STDIN.read, ""
input.each("\s") {|word| output << word.capitalize}
puts output.gsub!(/[^0-9A-Za-z\-]/, '')

Isso vai te dar a capitalização e você pode fazer um pouco mais, é claro, se você conhece o Ruby. Você poderia acionar o Serviço usando o QuickSilver, mas você precisaria ativar seu navegador usando o AppleScript antes, eu acho.

    
por 11.03.2012 / 14:14