背景
在启动公司项目时,遇到了一个异常导致无法启动项目。项目启动时,会扫描根目录及其子目录的文件,但是 MacOS 系统自动生成的文件 .DS_Store
影不被启动器识别,导致解析异常,从而项目启动失败。因此,为了正常启动项目,需要检索项目下所有文件,并删除项目中所有的 .DS_Store
文件。
问题描述
一行命令搜索并删除当前目录及其子目录下指定文件名文件。
解决办法
find . -name '.DS_Store' -exec rm -f {} \;
执行该命令,将会删除当前目录及其子目录下,文件名为 .DS_Store
的文件。
备注: '.DS_Store'
文件名的引号可删除。
交互式提示删除
find . -name '.DS_Store' -exec rm -i {} \;
删除文件之前,将会给出提示。按 y 表示删除文件,按 n 表示不删除文件。
与之相同效果的命令:
find . -name '.DS_Store' -ok rm {} \;
find 命令用法详解
基础用法
find . -name testfile.txt
在当前目录及其子目录搜索文件名为 testfile.txt 的文件
-exec 命令
find . -name '.DS_Store' -exec rm -f {} \;
-exec 参数后面是 command 命令,它的终止以;为结束标志,且必不可少。考虑到各个系统分号会有不同意义,所以前面加反斜杠。
{} 花括号代表前面find查找出来的文件名。
需要注意的是,删除文件前最好确认一下文件名。避免删除不期望删除的文件。大家可以使用上述提到的交互式提示删除命名。
关于 .DS_Store
.DS_Store (英文全称 Desktop Services Store)[1] 是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。[2]该文件由Finder创建并维护,类似于Microsoft Windows中的desktop.ini文件。
.DS_Store
文件为 Finder使用,用于储存图标地址信息和视图设置。
可以使用以下命令,禁用或启动自动生成:
- 禁止生成
defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool TRUE
- 恢复.DS_Store 生成
defaults delete com.apple.desktopservices DSDontWriteNetworkStores
相关资料
- https://www.cyberciti.biz/faq/linux-unix-how-to-find-and-remove-files/
- https://www.digitalocean.com/community/tutorials/how-to-use-find-and-locate-to-search-for-files-on-a-linux-vps
- https://www.linode.com/docs/tools-reference/tools/find-files-in-linux-using-the-command-line/
- https://www.cnblogs.com/peida/archive/2012/11/14/2769248.html
- WIKi - .DS_Store