bash - 在保留目录修改日期的同时递归删除 .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 效率在这里并不是真正的问题,因为我只会运行一次(而且并不密集)。
解决方案
推荐阅读
- node.js - 如何使用节点 js 更新 mongo db 中的记录
- java - PDFBox 字段值在展平后无法显示
- blockchain - TheGraph:多个区块链的一个图节点?
- php - 检查参数是否存在于具有多个参数的 url
- c - 如何在C中获得循环的平方
- wso2 - 如何在 WSO2 身份服务器中创建自定义客户端身份验证器
- javascript - 当 last 也是动态创建时,如何让 li 动态单击
- python - 如何将成员变量添加到python对象
- gradle-kotlin-dsl - 无法加载主类
- mongoose - Mongoose - 是否可以在模式级别将 findOneAndUpdate 选项“新”标志覆盖为真?