从目录及其子目录中删除所有具有某个扩展名的文件

4
为什么会出现命令:
rm **/*.pyc

移除空值?

如何正确实现预期行为?

1个回答

9

为使你的命令生效,首先需要启用globstar

shopt -s globstar

启用globstar模式后,**/*.pyc将扩展匹配当前目录及其所有子目录中以.pyc结尾的文件。
另外,您也可以使用find命令:
find -name "*.pyc" -delete

这将在当前目录及其所有子目录中搜索以.pyc结尾的任何内容,并删除它找到的所有内容。如果要限制其仅匹配文件,还可以添加-type f开关,尽管这可能不是问题(并且在您的原始命令中也不是这种情况)。

或者,如果您的find版本不理解-delete

find -type f -name "*.pyc" -exec rm {} \;

这是一个令人难以置信的答案 - 我已经开发了10多年,从未遇到过这种情况!它非常容易使用 - 即使在Windows Git Bash上也是如此。为什么不默认启用它呢! - danday74

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接