Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 用于组织下载文件类型的Mac bash脚本_Macos_Bash - Fatal编程技术网

Macos 用于组织下载文件类型的Mac bash脚本

Macos 用于组织下载文件类型的Mac bash脚本,macos,bash,Macos,Bash,系统:Mac OSX 10.6.8 外壳:Bash外壳(终端) 我正在尝试编写一个脚本,有选择地组织我的下载文件夹 目的: -打开脚本后,从浏览器下载的具有特定文件类型(例如:“.rar”)的任何文件都将保存在下载子目录(例如:“rar_下载”)。 -不会影响下载目录中的当前文件 -关闭脚本后,下载的文件将正常保存到下载目录。 我将非常感谢任何关于如何写这篇文章的见解。谢谢大家! 一个简短的大纲:你需要两个时间戳,脚本打开和脚本关闭,它们定义了你动作的时间范围。让脚本持续工作相当困难,因为您需要

系统:Mac OSX 10.6.8
外壳:Bash外壳(终端)

我正在尝试编写一个脚本,有选择地组织我的下载文件夹

目的:
-打开脚本后,从浏览器下载的具有特定文件类型(例如:“.rar”)的任何文件都将保存在下载子目录(例如:“rar_下载”)。
-不会影响下载目录中的当前文件
-关闭脚本后,下载的文件将正常保存到下载目录。


我将非常感谢任何关于如何写这篇文章的见解。谢谢大家!

一个简短的大纲:你需要两个时间戳,脚本打开和脚本关闭,它们定义了你动作的时间范围。让脚本持续工作相当困难,因为您需要浏览器集成,所以手动(或通过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表达式提取后缀,即文件名最后一个后缀之后的终端部分。在最后一个组件中,如果没有后缀,则不打印输出。

我想知道AppleScript(Automator workflow?)是否不是一个更简单的解决方案。请参见示例3。如果要在某些文件夹中聚合多个文件类型(例如,将.jpeg、.jpg、.png定向到./images子文件夹),则case语句会有所帮助。“mkdir-p”命令在任何情况下都有助于确保目标子目录存在。@thiton还有一个很小的改进,就是使用“后缀=${filename##*\.}”来捕获文件扩展名。感谢您的及时回复!您的代码有点让人不知所措,所以我需要花一些时间研究使用的命令,然后才能理解这里发生了什么(更不用说regexp了)。