从文件夹和子文件夹中删除具有某些扩展名的所有文件

kha*_*iuk 2 bash rm

为什么命令:

rm **/*.pyc
Run Code Online (Sandbox Code Playgroud)

没有删除?

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

Tom*_*ech 5

要使命令有效,您需要先启用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)