3

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

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

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

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

2 ответа2

4

Вы можете создать службу 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, просто введите их имя.


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

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


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

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

3

Та же идея, что и у Даниэля. Создать сервис в 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 раньше.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .