在 MacOS X 中保存时自动从文件名中删除特殊字符的功能

Mos*_*ess 3 string-manipulation filenames macos

我经常在 MacOS X (10.6) 中从网页创建 PDF 文件,并且经常遇到自动建议的文件名(基于网页名称)包含许多特殊字符的问题。

所以我想知道:有没有一种简单的方法(苹果脚本、shell 脚本、OS X 服务),它接受一个字符串(比如这个文件名)并通过

  • 删除所有空格和其他特殊字符(还有那些在 OS X 中可能允许但在 Windows 或 Linux 中被禁止的字符!!因为我经常将文件传输到我们的 PC)
  • 可能以大写字母开头每个单词(在删除的空格之后)
  • ……还有什么重要的?

我正在使用 Quicksilver,所以也许可以创建一个命令,它可以用转换后的字符串替换当前文本选择(在文件另存为...对话框中)。

Dan*_*eck 5

您可以创建一个 Automator 服务来在支持服务的所有应用程序(几乎是所有应用程序)中执行此操作。


打开 Automator 并选择创建一个在任何应用程序中接收选定文本服务,并选中输出替换选定文本

从库中添加一个Run Shell Script操作,并粘贴以下脚本代码:

sed 's|[^a-zA-Z0-9]||g'
Run Code Online (Sandbox Code Playgroud)

这个特定的脚本,一个简单的sed替换将从文件名中删除所有非字母数字字符。它a-zA-Z0-9用作允许字符的白名单,根据需要添加。

您也可以执行其他操作,并将它们链接在一起。例如,tr [A-Z] [a-z]将所有内容小写,sed 's|[^a-zA-Z0-9]||g' | tr [A-Z] [a-z]并将两者结合。

另存为例如Sanitize Filename,并可选择在System Preferences » Keyboard » Keyboard Shortcuts » Services 中分配键盘快捷。您也应该能够使用 Quicksilver 调用服务,只需输入它们的名称即可。


每当您在另存为...或类似对话框中时,选择建议的文件名(默认情况下已选择):

在此处输入图片说明

调用服务程序菜单»服务»清理文件名(或使用您调用的键盘快捷键)。它将通过脚本管道文件名,并使用其输出替换选择。

在此处输入图片说明


对于标题大小写和删除坏字符(我也保留下划线、点和连字符),以下脚本代码似乎对我最有用:

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

在此处输入图片说明