Функция автоматического удаления специальных символов из имен файлов при сохранении в 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 раньше.