首页 > 解决方案 > 在保留目录修改日期的同时递归删除 .DS_Store 和 ._.DS_Store

问题描述

我一直在进行从 OSX 到 Windows 的长期缓慢转变(出于通常的原因),并且我经历了转移整个文档目录的费力过程,其中包含许多子/子/子/目录,同时仍然保留所有修改日期,因为日期是我组织方式的重要组成部分。

我想我的麻烦,有点挑剔,是我的目录中充满了 .DS_Store 和 ._.DS_Store 文件。我想删除它们,但如果我这样做,它会更改父目录的修改日期,这是毁灭性的。

我希望通过在每个目录中运行一个脚本来完成这项任务,如下所示:

#!/bin/bash         
# get the current directory's timestamp
STR2=$(stat -c %y .)
STR=$(/usr/bin/date +%Y%m%d%H%M -d "$STR2")

# Remove the offending files
rm ./.DS_Store
rm ./._.DS_Store

# Reset the current directory's timestamp
touch -a -m -t $STR .

然后从顶级目录递归执行脚本,如下所示:

find * -name '.DS_Store' -execdir /path/to/script/script.sh \; 

似乎在我的文件夹的测试副本中有效,但在我将它释放到我珍贵的文档文件夹之前,我希望得到一些关于我的策略中可能存在的漏洞的反馈/警告。

谢谢!

ps 效率在这里并不是真正的问题,因为我只会运行一次(而且并不密集)。

标签: bashlast-modified

解决方案


推荐阅读