我需要为数百个文件夹压缩文件夹(以及所有子文件夹)的内容。 是否可以运行一个命令来获取特定文件夹(提示)的所有文件,除了所有具有.fla扩展名的文件并将此内容压缩到一个zip文件中?
现在我正在复制文件夹,搜索所有的.fla文件,然后选择文件夹中的所有文件(我要压缩内容,而不是文件夹)并创建一个拉链(取道)太久了。
我知道可以使用Apple Script删除和复制文件。但这是否也适用于上述顺序+压缩?
答案 0 :(得分:2)
好吧,所以我仍然坚持这个问题。 我创建了一个Bash脚本,它通过一个只有一行代码的Applescript可执行文件执行:
执行shell脚本“/Volumes/Work/createZipFile.sh”
Bash脚本打开Applescript,它允许我提示一个文件夹(我知道,打开AS以运行运行AS的Bash脚本有点傻)。然后使用该变量来压缩此文件夹内容,而不使用.fla文件。
myFolder =`/ usr / bin / osascript<< EOT
告诉应用程序“Finder”
activate set myfolder to choose folder with prompt "Select the Folder that you want to zip!"
结束告诉 返回(myfolder的posix路径) EOT`
cd $ myFolder
zip -r ZipMe.zip。 -x“ .fla ”
echo“已创建zip文件”
所以这个脚本确实适用于我尝试压缩的文件夹。 但遗憾的是并非我选择的每个文件夹。有时候(不知道为什么)它似乎无法找到我选择的文件夹,因此我启动(至少zip-process开始像疯了一样运行并且不停止)拉链我的整个驱动器。 什么想法可能是错的?
答案 1 :(得分:1)
如果有人想要使用这个脚本(我非常怀疑;)),这是我的最终版本。
#!/bin/bash
#Opens an applescript prompt window to select a folder
myFolder=`/usr/bin/osascript << EOT
tell application "Finder"
activate
set myfolder to choose folder with prompt "Select the Folder that you want to Zip!"
end tell
return (posix path of myfolder)
EOT`
# Terminate if the path is empty (canceled)
if [ -z "$myFolder" ];
then
#echo "Chose a folder!"
exit 0
else
#Change the directory to the above selected folder
cd "$myFolder"
# Creates a ZipFile with todays date of the selected folder, neglecting the after -x listed filetypes
zip -r ZipFile_`eval date +%Y_%m_%d`.zip . -x "*.fla*" "*.AppleDouble*" "*.DS_Store*"
#echo "A zip File has been created"
fi
答案 2 :(得分:0)
你的第一步应该是弄清楚.fla文件的“种类”。为此,请运行此脚本并选择一个.fla文件:
tell application "Finder"
set theFile to choose file
display dialog (kind of theFile) as string
end tell
然后要获取所有文件但在任何文件夹中输入该类型,您可以运行此脚本(用您的.fla结果替换为“纯文本”):
tell application "Finder"
set thePath to choose folder
set theFiles to get every file of folder thePath whose kind is not equal to "Plain Text"
end tell
从那里开始,这只是拉链的问题。在做了一些快速的谷歌搜索之后,看起来最简单的方法就是通过使用do shell脚本进行压缩,这应该不会那么糟糕,因为你拥有一个漂亮的小数组中需要的所有文件。如果你想要速度,我可能会建议将整个项目转移到bash。这也应该简化一些事情。祝你好运!