侧边栏壁纸
博主头像
Z同学博主等级

工作磨平激情前,坚持技术的热忱。 欢迎光临Z同学的技术小站。 分享最新的互联网知识。

  • 累计撰写 274 篇文章
  • 累计创建 55 个标签
  • 累计收到 74 条评论

MacOS 中通过脚本和自动化工具批量解决移动磁盘文件占用问题

Z同学
2020-08-11 / 0 评论 / 1 点赞 / 840 阅读 / 1,344 字
温馨提示:
本文最后更新于 2021-11-24,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

前言

在macBook系统之中,由于不支持ntfs。挂载移动硬盘时,经常出现占用问题。
每次通过命令清理太繁琐。

下面介绍通过macOS之中的自动工具来实现,一次创建,终身有效。
说明

  1. 选择单个文件,解除当前文件OS占用
  2. 选择文件夹,解除整个文件夹及子文件夹里面的文件OS占用
  3. 脚本不会删除你的磁盘文件,不会影响文件内容。

1.创建自动操作

image-20211124170838857

创建“快速操作”文稿类型

image-20211124170849668

选择工作流程的类型为“文件或文件夹”

image-20211124170901957

先创建一个请求确认,避免错误点击,造成的无意义操作

请按照下图所示进行操作。

image-20211124170917941

创建一个确认对话框,文字内容随便输入,这只是我的一个参考.

image-20211124170928925

然后添加“输入参数”. 例如选择了文件夹或者文件后,需要将文件地址传递到脚本中来是,所以我们需要选择添加一个路径变量

image-20211124170939697

添加成功后的效果如下所示:

image-20211124170953435

2.配置自动化流程脚本

关键点就在于脚本的配置了

选择Shell:/bin/bash 选择传递输入:至stdin
然后输入下面脚本代码

read -p "input a val:" INIT_PATH
function read_dir(){
	IFS=$(echo -en "\n\b")
    for file in ` ls $1 `
    do
        if [ -f $1"/"$file ];
        then
			xattr -c $1"/"$file
        else
			read_dir $1"/"$file
       fi
    done
}

if [ -f "$INIT_PATH" ];
then
	xattr -c "$INIT_PATH"
else 
	read_dir $INIT_PATH 
fi

效果图如下所示:

image-20211124171006518

然后再给自动工具添加一个完成后的通知

到这里整个自动化脚本工具已经创建完成了。

完整版效果如下图所示:

image-20211124171022988

3.保存编辑内容,并执行

点击“存储”进行保存操作.

打开你的移动磁盘文件目录,选择被占用的文件

右击选择“快速操作” 这个时候就会出现刚才保存的自动化脚本了

image-20211124171037621

选择“清理OS文件占用”

就会出现一个弹框让你确认是否进行清理,确认后就会进行脚本执行阶段。

执行完毕后出现

其他

1.脚本运行出现:xattr: [Errno 30] Read-only file system: '/Volumes/你的磁盘名称/xxxxx/xxx/xxx
那是因为你的磁盘当前是以只读形式进行挂载的,系统没有写的权限。所以不能执行。
建议查询下如何将ntfs 挂载成读写模式,可以通过命令的形式直接操作。

2.unexpected end of file 如果出现该问题,因为某个文件访问不了执行错误了才会出现,建议在windows下修复下磁盘然后再进行尝试。

3.如果出现磁盘插入之后,空间有存储容量占用,但是打开目录下确实空的。
这是因为ntfs文件目录系统被损坏,你的文件没有被丢失,插入windows系统下,使用windows系统的磁盘恢复,就可以恢复文件目录系统了。不会影响存储的文件本身。

这种主要是针对已经配置了ntfc 磁盘加载,并赋予了磁盘读写配置的场景。并不是说ntfc磁盘插入就能够使用上面的配置。

如果是需要可以免费访问ntfc磁盘的软件 可以试试NTFSToolfor Mac:NTFS管理_NTFS挂载_dmg镜像磁盘管理— Mac软件分享【腾讯柠檬精选】 (qq.com)

1

评论区