正如标题所述,我正在尝试以递归方式删除文件夹中以._
. 对于我网站上的每个文件,都存在一个具有相同名称但._
附加了的文件。我该如何摆脱这些?
问问题
3953 次
4 回答
5
我想你的意思是“预先”
稍后编辑
SH脚本:
find . -name ".?*" -exec rm {} \;
之前的代码不能递归工作;这个可以。如果您也想删除文件夹,请使用以下命令:
find . -name ".?*" -exec rm -R {} \;
于 2010-08-15T12:20:48.713 回答
2
这篇文章可能重复,我已经在我自己的生产服务器上成功使用了它:
find /var/www/html \( -name '.DS_Store' -or -name '._*' \) -delete
于 2013-02-07T01:16:37.083 回答
1
编辑:下面的用户 Gilles 正确地提到了以下替代技术可能很危险,因为 xargs 不会逐字处理文件名中的单引号和双引号。名称为 的文件Today's special.txt
会导致错误(未终止的引号)。为了完整起见,我仍然将其包含在此处,因为它在网络上被广泛提及。
通过管道到 rm 在 Unix/Mac 上执行此操作的另一种类似方法。
find . -name '.*' -type f | xargs rm -f
该-type f
参数告诉它忽略目录和特殊文件,如 .、..、符号链接和 devs。
不幸的是,我们不能使用类似rm -R .*
的东西,因为.*
输入模式在被赋予 rm 命令之前由 shell 扩展。这将导致递归删除与起始目录中的文件匹配的所有文件。
Windows 等效命令 ( del -R .*
) 对用户来说要简单得多,因为del
程序会为每个子目录扩展通配符。
于 2010-08-15T12:59:46.093 回答
0
寻找 。\( -name '.DS_Store' -or -name '._*' \) -type f -print0 | xargs -0 rm -f
使用此命令也可以在搜索中包含名称中带有空格的文件和文件夹。
于 2014-11-04T03:51:56.210 回答