.py
そして、ファイルが発生するたびに.pyc
ディレクトリ(およびサブディレクトリ)をクリーンアップしたいと思います。私は次を試しました
find . -name '*pyc' -o -name '*py~' -exec rm -f {} \;
すべてのファイルがありませんpyc
。するとき
find . -name '*pyc' -o -name '*py~'
pyc
このコマンドは削除されていないファイルを探します。どんな洞察力がありますか?
答え1
ワイルドカードパターンを使用するのではなく、ワイルドカードパターンを使用しないでください-o
。
find . -name '*py[c~]' -delete
または:
find . -name '*py[c~]' -exec rm -f {} +
答え2
演算子-a
(2つの述語の間に暗黙的)が優先されるため、-o
括弧が必要です。
find . \( -name '*pyc' -o -name '*py~' \) -a -exec rm -f {} +
(上記の内容はデモ目的でのみ含まれており、暗黙的であるため-a
必要ありません。)避けることができれば、各ファイルごとに1つずつ実行する必要がないので;
交換しました。+
rm
答え3
bash 4+を使用している場合、globstarは再帰ワイルドカードを提供するため、findは必要ありません。
shopt -s globstar
for f in ./**/*.py{c,~}; do rm "$f"; done
これはshopt
aで区切られず、独自の行になければなりません;
(可能であれば、スクリプトの一番上、shebangの直下で使用する必要があります)。
答え4
私はこの質問があまり新しいものではないことを知っています。しかし、おそらく使用するのに十分でしょう。
rm -f `find . -name '*.pyc' -o -name '*.py~' `