一行命令解决搜索和删除指定文件名文件

背景

在启动公司项目时,遇到了一个异常导致无法启动项目。项目启动时,会扫描根目录及其子目录的文件,但是 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

你可能感兴趣的:(一行命令解决搜索和删除指定文件名文件)