我重命名了一个相当大的项目中的一些文件,并想删除他们留下的.pyc文件。我尝试了bash脚本:
rm -r *.pyc
但它并没有像我想的那样递归遍历文件夹。我做错了什么?
我重命名了一个相当大的项目中的一些文件,并想删除他们留下的.pyc文件。我尝试了bash脚本:
rm -r *.pyc
但它并没有像我想的那样递归遍历文件夹。我做错了什么?
当前回答
windows用户:
del /S *.pyc
其他回答
如果你想删除所有*。Pyc文件和__pycache__目录递归在当前目录:
python:
import os
os.popen('find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf')
或手动使用终端或cmd:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
find . -name '*.pyc' -print0 | xargs -0 rm
find函数递归地查找*。佩克文件。xargs接收该名称列表并将其发送给rm。-print0和-0告诉这两个命令用空字符分隔文件名。这使得它能够正确地处理包含空格的文件名,甚至包含新行的文件名。
使用-exec的解决方案是有效的,但是它会为每个文件生成一个新的rm副本。在一个较慢的系统或有很多文件,这将花费太长时间。
你也可以添加更多的参数:
find . -iname '*.pyc' -print0 | xargs -0 --no-run-if-empty rm
Iname增加了大小写不区分,比如*。佩克。如果没有这样的文件,no-run-if-empty可以防止从rm得到错误。
此外,人们通常希望删除所有*。佩克,*。Pyo文件和__pycache__目录递归在当前目录中。
命令:
find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
windows用户:
del /S *.pyc
你可以运行find。- name”*。Pyc " -type f -delete。
但要谨慎使用。首先运行查找。- name”*。Pyc”键入f以查看要删除的文件。
此外,确保-delete是命令中的最后一个参数。如果你把它放在名字*之前。Pyc参数,它将删除所有内容。