交换文件名位置

Exchange filename position

我想在 FolderX 中交换一个文件的数百个文件名位置。

文件名都是这样创建的:pos1.pos2.pos3.pos4.pos5.pos6.pdf 示例:(GK.19.kkla.0715.nr.36053342.zg.119.pdf)

我想交换一些仓位,使其变为:pos4.pos2.pos5.pos6.pos3.pos1.pdf

例如,命令如;交换 pos3->pos6 或 pos1->pos4

我看了一下Automator,但是只能在文件名前后添加,不能交换位置。

也许是 AppleScript?感谢您的投入。

SO 不是代码编写服务;也就是说:您可以使用 AppleScript(编写 Finder/System 事件脚本来遍历文件和文本项定界符来拆分每个文件名),或者您可以使用 shell 脚本来完成,它的优点是快得多:

#!/bin/sh

for f in /path/to/input/folder/*; do
    n=`basename "$f" | awk -F '.' '{ print "."".""."".""."".pdf" }'`
    mv "$f" "/path/to/output/folder/$n"
done

以下解决方案使用 AppleScript 的文本项分隔符和系统事件。它非常快,并且具有避免在文件夹中某些文件的文件名与所需模式不匹配时引发错误的优点。此外,它适用于文件夹的 pdf。

set folderHFS to (choose folder) as text

set {ATID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, "."}
tell application "System Events"
    repeat with aFile in (get files of folder folderHFS whose name extension is "pdf")
        try
            set {pos1, pos2, pos3, pos4, pos5, pos6, ext} to text items of (get name of aFile)
            set name of aFile to {pos4, pos2, pos5, pos6, pos3, pos1, ext} as text
        end try
    end repeat
end tell
set AppleScript's text item delimiters to ATID