2011-11-06 54 views
0

操作系统:Mac OSX 10.6.8
壳牌:Bash shell中(终端)
Mac的bash脚本来组织下载的文件类型

我想编写一个脚本,选择我的组织Downloads文件夹。

目的:
- 当脚本开启时,从浏览器下载一个特定的文件类型(比如:“.rar程序”)的文件,保存在下载的子目录(例如:‘rar_downloads’) 。
- 不会影响下载目录中的当前文件
- 当脚本关闭时,下载的文件通常会保存到Downloads目录。

我很感谢任何有关如何编写此内容的见解。谢谢!

+0

我不知道AppleScript(Automator工作流?)是不是一个更简单的解决方案。 – 2011-11-06 20:58:13

回答

0

简介:您需要两个时间戳,脚本开启和脚本关闭,它们定义了您的移动的时间范围。让脚本持续工作相当困难,因为你需要浏览器集成,所以手动运行(或通过crontab)。

粗糙轮廓:

find Downloads -newer script-on -and -not -newer script-off | while read filename; do 
    SUFFIX=`echo "$filename" | sed -n -e 's/.*\.\([^./]*\)$/\1/p'`; 
    if [ -n "$SUFFIX" ]; then mv "$filename" "Downloads/${SUFFIX}_downloads"; fi 
done 

的在第2点中提取后缀sed的表达,即在最后的文件名的终端部分。在最后一个组件中,如果没有后缀,则不打印输出。

+0

请参阅http://www.thegeekstuff.com/2010/07/bash-case-statement/示例3.如果要在某些文件夹中聚合多个文件类型(例如,指示.jpeg, .jpg,.png到./images子文件夹)。在任何情况下,“mkdir -p”命令都会有帮助,以确保您的目标子目录存在。 @thiton的一个非常小的改进是使用“SUFFIX = $ {filename ## * \。}”来捕获文件扩展名。 – phatfingers

+0

谢谢您的及时回复!你的代码有点压倒性的,所以我需要花一些时间研究所使用的命令,然后才能理解这里发生了什么(更不用说正则表达式了)。 – Red