我知道这基本上已经回答了,带有shell脚本(Sanitize Filenames)的automator工作得很好,但是我也需要它来做所有子文件夹。如果可能,在保留文件扩展名的同时将文件名减少到50个字符。我发现了一行bash代码截断了文件,但它也剥离了扩展名,并且在将这些文件从Mac传输到Windows时效果不佳。
现在的脚本是这样的
for f in "$1"/*; do
dir=$(dirname "$f")
file=$(basename "$f")
mv "$f" "${dir}/${file//[[:cntrl:]\\\/:*?\"<>|]/_}" 
done 
我并不反对在automator中使用applescript来完成这项任务。
                   注意:在unix / linux中有一个名为“rename”的可选命令,通过快速Google搜索,我发现mac有许多类似的命令。我想你应该检查这些命令。这些“重命名”命令使用  SED  表达式(正则表达式+其他)构造最终名称。 
                
                
                  
                    —
                    Giacomo Catenazzi
                    
                  
                
              
                   有没有办法让这个做子文件夹?我还试图将文件名修剪为30个字符,同时保留扩展名。有任何想法吗?我有这个:mv“$ f”“$ {dir} / $ {file:0:30}这很好用,但删除了我需要的扩展,因为文件正在传输到Windows系统。 
                
                
                  
                    —
                    Tim Moseley
                    
                  
                
              
                   我会做'像'  {0,30}(\。[^。]  )?$'作为正则表达式。使用重命名或“find | sed | bash”,在sed中我构造mv命令 
                
                
                  
                    —
                    Giacomo Catenazzi