2

正如标题所述,我正在尝试以递归方式删除文件夹中以._. 对于我网站上的每个文件,都存在一个具有相同名称但._附加了的文件。我该如何摆脱这些?

4

4 回答 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 回答