Функция автоматического удаления специальных символов из имен файлов при сохранении в MacOS X

Я часто создаю PDF-файлы из веб-страниц в MacOS X (10.6), и очень часто у меня возникает проблема, заключающаяся в том, что автоматически предлагаемое имя файла (на основе имени веб-страницы) содержит много специальных символов.

Поэтому мне интересно: есть ли простой способ (сценарий Apple, сценарий оболочки, служба OS X), который принимает строку (например, это имя файла) и преобразует ее

  • удаление всех пробелов и других специальных символов (также тех, которые могут быть разрешены в OS X, но запрещены в Windows или Linux!!, поскольку я часто передаю файлы на наш компьютер)
  • может начинаться каждое слово (после удаленного пробела) с заглавной буквы
  • ... что еще может быть важным?

Я использую Quicksilver, поэтому, возможно, можно будет создать команду, которая позволит заменить текущий выделенный текст (в диалоге сохранения файла как...) преобразованной строкой.

2 ответа

Решение

Вы можете создать службу Automator для этого во всех приложениях, которые поддерживают службы (а это почти все из них).


Откройте Automator и выберите, чтобы создать Службу, которая получает выбранный текст в любом приложении, и отметьте, что Выход заменяет выбранный текст.

Добавьте одно действие Run Shell Script из библиотеки и вставьте следующий код скрипта:

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

Это конкретный сценарий, простой sed подстановка удалит все не буквенно-цифровые символы из имени файла. Оно использует a-zA-Z0-9 в качестве белого списка разрешенных символов добавьте его по своему желанию.

Вы также можете выполнять другие действия и связывать их вместе. Например, tr [A-Z] [a-z] будет в нижнем регистре все, и sed 's|[^a-zA-Z0-9]||g' | tr [A-Z] [a-z] совместим два.

Сохраните, например, Sanitize File Name, и при необходимости назначьте сочетание клавиш в Системных настройках "Клавиатура" Сочетания клавиш "Службы. Вы также сможете вызывать сервисы, используя Quicksilver, просто введите их имя.


Когда вы находитесь в диалоговом окне " Сохранить как…" или аналогичном, выберите предложенное имя файла (оно выбрано по умолчанию):

введите описание здесь

Вызовите сервис " Меню программы" "Сервисы" Sanitize File Name (или используйте вызванную вами комбинацию клавиш). Он передаст имя файла через скрипт и использует его вывод для замены выделения.

введите описание здесь


Для ввода заглавных букв и удаления плохих символов (я также держу подчеркивание, точку и дефис), мне кажется, что следующий код скрипта в основном работает для меня:

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

введите описание здесь

Та же идея, что и у Даниэля. Создать сервис в Automator. Замените оболочку Run Shell Script на /usr/bin/rubyи добавьте следующее:

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

Это даст вам капитализацию, и вы, конечно, сможете сделать немного больше, если знаете Ruby. Вы можете запустить Службу с помощью QuickSilver, но вам, вероятно, потребуется активировать браузер с помощью AppleScript раньше.

Другие вопросы по тегам