将终端命令转换为AppleScript应用程序

3
我有一个终端命令,我希望能够使用applescript自动化它。我还想要一个命令来将目录更改到我想要应用该命令的文件夹。在 cd 到含有 .pdf 文件的文件夹之后,此代码查看文件名的第一个字母,并基于该字母将文件按字母表顺序放入与文件第一个字母对应的字母文件夹中。
for x in `ls -1 | sed -e 's/^\(.\).*/\1/' | sort -u`; do
mv -i ${x}?* $x
done

我该怎么做?我对此是个新手。任何见解都将不胜感激。我愿意学习Applescript,但我不确定从哪里开始实施。

谢谢

1个回答

1

试试这个:

choose folder with prompt "Select the original folder" default location (path to documents folder)

set folderPath to contents of result
set folderPath to POSIX path of folderPath

do shell script "for x in `ls -1 " & folderPath & " | sed -e 's/^\\(.\\).*/\\1/' | sort -u`; do destination=$(echo $x | tr '[:lower:]' '[:upper:]'); mkdir " & folderPath & "$destination; mv -i " & folderPath & "${x}?* " & folderPath & "$destination/; done"

它忽略大小写,即:以 aA 开头的所有文件都移动到文件夹 A/编辑1: 尝试创建目标文件夹,但如果已存在,则静默失败并将文件移动到其中。 编辑2: 默认打开 Dropbox 文件夹:
set dropboxFolder to (POSIX path of (path to home folder) & "Dropbox")
choose folder with prompt "Select the original folder" default location (POSIX file dropboxFolder as alias)

编辑3:最终脚本:

set dropboxFolder to (POSIX path of (path to home folder) & "Dropbox")
choose folder with prompt "Select the original folder" default location (POSIX file dropboxFolder as alias)

set folderPath to contents of result
set folderPath to POSIX path of folderPath

do shell script "for x in `ls -1 " & folderPath & " | sed -e 's/^\\(.\\).*/\\1/' | sort -u`; do destination=$(echo $x | tr '[:lower:]' '[:upper:]'); mkdir " & folderPath & "$destination; mv -i " & folderPath & "${x}?* " & folderPath & "$destination/; done"

这只是更改了文件名。它没有将文件移动到以文件名起始字母命名的文件夹中而不更改其名称。有什么想法吗?感谢您的回复。 - J Paul
我也尝试了以下内容,但似乎无法使其工作:do script "cd ~/desktop/hazel_organization/test/test1; for x in ls -1 | sed -e 's/^(.)./\1/' | sort -u; do mv -i ${x}? $x done"谢谢。 - J Paul
@JPaul 刚刚编辑了一下,现在它会移动到正确的文件夹,如果文件夹不存在,则在移动文件之前创建它。希望能有所帮助。 - Arthur Alves
它实际上不忽略文件夹名称的大小写。如果我使用小写字母开头的文件夹,它会报错。尽管它仍然可以移动文件,但会生成一个错误,我可以退出苹果脚本。你有什么想法吗?非常感谢你的帮助。 - J Paul
最终脚本应该是这样的:set dropboxFolder to (POSIX path of (path to home folder) & "Dropbox") choose folder with prompt "选择原始文件夹" default location (POSIX file dropboxFolder as alias)set folderPath to contents of result set folderPath to POSIX path of folderPathdo shell script "for x in ls -1 " & folderPath & " | sed -e 's/^\\(.\\).*/\\1/' | sort -u; do destination=$(echo $x | tr '[:lower:]' '[:upper:]'); mv -i " & folderPath & "${x}?* " & folderPath & "$destination; done" - J Paul
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接