【问题标题】:remove all files with some extension from directories and subdirectories从目录和子目录中删除所有带有某些扩展名的文件
【发布时间】:2014-12-11 18:22:07
【问题描述】:

为什么要命令:

rm **/*.pyc

什么都不删除?

实现预期行为的正确方法是什么?

【问题讨论】:

    标签: bash rm


    【解决方案1】:

    要使您的命令正常工作,您需要先启用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 上 - 为什么默认情况下不启用!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 2013-07-31
    • 2016-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    相关资源
    最近更新 更多