为什么命令:
rm **/*.pyc
Run Code Online (Sandbox Code Playgroud)
没有删除?
实现预期行为的正确方法是什么?
要使命令有效,您需要先启用globstar
:
shopt -s globstar
Run Code Online (Sandbox Code Playgroud)
启用globstar模式后,**/*.pyc
将展开以匹配.pyc
以当前目录和所有子目录结尾的文件.
或者你可以使用find
:
find -name "*.pyc" -delete
Run Code Online (Sandbox Code Playgroud)
这将搜索.pyc
当前目录和所有子目录中的任何内容,删除它找到的任何内容.要将其限制为仅匹配文件,您也可以添加-type f
交换机,尽管这可能不是问题(在原始命令中不会出现这种情况).
或者,如果您的find版本不理解-delete
:
find -type f -name "*.pyc" -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)