代码之家  ›  专栏  ›  技术社区  ›  Teifion

如何从项目中删除所有.pyc文件?

  •  744
  • Teifion  · 技术社区  · 17 年前

    我在一个相当大的项目中重命名了一些文件,并想删除它们留下的.pyc文件。我尝试了bash脚本:

     rm -r *.pyc
    

    但这并没有像我想象的那样在文件夹中反复出现。我做错了什么?

    25 回复  |  直到 10 年前
        1
  •  1252
  •   Mark Amery Harley Holcombe    8 年前
    find . -name "*.pyc" -exec rm -f {} \;
    
        2
  •  1049
  •   I159    10 年前

    find . -name '*.pyc' -type f -delete

    当然是最简单的。

        3
  •  88
  •   Wilfred Hughes AntuanSoft    12 年前

    添加到您的 ~/.bashrc

    pyclean () {
            find . -type f -name "*.py[co]" -delete
            find . -type d -name "__pycache__" -delete
    }
    

    __pycache__

    用法很简单:

    $ cd /path/to/directory
    $ pyclean
    
        4
  •  87
  •   jb.    13 年前

    pyclean 脚本中 python-minimal 包裹。

    pyclean .
    
        5
  •  53
  •   Asclepius    9 年前

    如果您使用的是bash>=4.0(或zsh)

    rm **/*.pyc
    

    */*.pyc 选择全部 .pyc **/*.pyc foo/bar/qux.pyc 将被删除 rm **/*.pyc 但不是通过 .

    globstar

    shopt -s globstar
    

    并检查其状态:

    shopt globstar
    
        6
  •  32
  •   haki    10 年前

    对于windows用户:

    del /S *.pyc
    
        7
  •  30
  •   miku    12 年前

    $ which pycclean
    
    pycclean is aliased to `find . -name "*.pyc" | xargs -I {} rm -v "{}"'
    
        8
  •  18
  •   Ron Romero    12 年前
    find . -name '*.pyc' -print0 | xargs -0 rm
    

    find递归地查找*.pyc文件。xargs接收该名称列表并将其发送给rm。-print0和-0告诉这两个命令用空字符分隔文件名。这使它能够正确处理包含空格的文件名,甚至包含新行的文件名。

    使用-exec的解决方案是有效的,但它会为每个文件生成一个新的rm副本。在速度较慢或文件较多的系统上,这将花费太长时间。

    find . -iname '*.pyc' -print0 | xargs -0 --no-run-if-empty  rm
    

    iname增加了不区分大小写的功能,比如*。PYC。如果没有此类文件,则no run if empty可以防止您从rm收到错误。

        9
  •  16
  •   Moxdata    12 年前
    $ find . -name '*.pyc' -delete
    

    $ find . -name "*.pyc" -exec rm -rf {} \;
    
        10
  •  13
  •   Mithril    7 年前

    *.pyc , *.pyo 文件和 __pycache__ 当前目录中的递归目录。

    命令:

    find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
    
        11
  •  10
  •   Yeo    10 年前

    Django project 已经在使用 Django Extension .

    python manage.py clean_pyc
    

    its source code .

        12
  •  8
  •   Clint Miller    17 年前

    为了在组合中加入另一个变体,你也可以使用这样的引号:

    rm `find . -name *.pyc`
    
        13
  •  7
  •   romuloigor    13 年前

    完全递归

    ll **/**/*.pyc
    rm **/**/*.pyc
    
        14
  •  3
  •   Community Mohan Dere    11 年前

    现在有一个包裹 pyclean PyPI易于使用,跨平台。用户只需要一个简单的命令行即可清理所有 __pycache__ 当前目录中的文件:

    pyclean .
    
        15
  •  3
  •   Kevin Sabbe    8 年前

    export PYTHONDONTWRITEBYTECODE=1
    

    unset PYTHONDONTWRITEBYTECODE
    
        16
  •  2
  •   Chris Lutz    17 年前

    第一轮:

    find . -type f -name "*.py[c|o]" -exec rm -f {} +
    

    然后添加:

    export PYTHONDONTWRITEBYTECODE=1
    

    To ~/.profile

        17
  •  2
  •   PiyusG    11 年前

    rm -r 递归到目录中,但仅限于您指定的目录 rm 。它还将删除这些目录。一种解决方案是:

    for i in $( find . -name *.pyc )
    do
      rm $i
    done
    

    find for 循环将遍历找到的文件列表,删除每个文件。

        18
  •  1
  •   gpap    7 年前
    find . -name "*.pyc"|xargs rm -rf
    
        19
  •  1
  •   Girish Vas    6 年前

    如果要从项目文件夹中删除所有.pyc文件。

    首先,你有

    cd <path/to/the/folder>
    

    find . -name \*.pyc -delete
    
        20
  •  1
  •   Abhishake Gupta    5 年前

    你可以跑 find . -name "*.pyc" -type f -delete .

    但要谨慎使用。首先运行 find . -name "*.pyc" -type f 查看要删除的文件。

        21
  •  0
  •   Milovan TomaÅ¡ević    5 年前

    find . -name "__pycache__"|xargs rm -rf
    find . -name "*.pyc"|xargs rm -rf
    
        22
  •  0
  •   mo-han    5 年前

    *.pyc 文件和 __pycache__ 当前目录中的递归目录:

    import os
    
    os.popen('find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf')
    
    • 或使用终端或cmd手动:
    find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf
    
    推荐文章