meaning - bash指令




如何從項目中刪除所有.pyc文件? (11)

Django擴展

注意:這個答案對於已經使用Django Extension的 Django項目非常具體。

python manage.py clean_pyc

該實現可以在其源代碼中查看。

我已經在一個相當大的項目中重新命名了一些文件,並希望刪除他們留下的.pyc文件。 我嘗試了bash腳本:

 rm -r *.pyc

但是,這並不像我想的那樣通過文件夾遞歸。 我究竟做錯了什麼?


find . -name '*.pyc' -delete

當然是最簡單的。


只需要將其他變體添加到混合中,您也可以使用如下所示的反引號:

rm `find . -name *.pyc`

在當前版本的debian中, pyclean腳本是python-minimal軟件包。

用法很簡單:

pyclean .

完全遞歸

ll **/**/*.pyc
rm **/**/*.pyc

對於Windows用戶:

del /S *.pyc

此外,人們通常要在當前目錄中遞歸刪除所有*.pyc*.pyo文件和__pycache__目錄。

命令:

find . | grep -E "(__pycache__|\.pyc|\.pyo$)" | xargs rm -rf

添加到你的~/.bashrc

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

這將刪除所有.pyc和.pyo文件以及__pycache__目錄。 它也非常快。

用法很簡單:

$ cd /path/to/directory
$ pyclean

$ find . -name '*.pyc' -delete

這比快

$ find . -name "*.pyc" -exec rm -rf {} \;

find . -name "*.pyc" -exec rm -f {} \;

如評論中所述,您也可以使用-delete操作

find . -name \*.pyc -delete

find . -name '*.pyc' -print0 | xargs -0 rm

該查找遞歸查找* .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中得到一個錯誤。





bash