コンパイルされたデータをすべて削除する必要があります:
-
build
と呼ばれるディレクトリ 、 -
obj
と呼ばれるディレクトリ 、 - *。soファイル。
コマンドを書きました
find ( -name build -o -name obj -o -name *.so ) -exec rm -rf {} ;
これにより、すべてのディレクトリが再帰的に処理され、必要なものがすべて削除されます。
最後にそのような出力があるのはなぜですか?
別のコマンドを作成する必要があるかもしれません。
find: `./3/obj': No such file or directory
find: `./3/build': No such file or directory
find: `./1/obj': No such file or directory
find: `./1/build': No such file or directory
find: `./2/obj': No such file or directory
find: `./2/build': No such file or directory
承認された回答:
-prune
を使用します とにかく削除するディレクトリで、find
に通知します わざわざファイルを見つけようとしないでください:
find . ( -name build -o -name obj -o -name '*.so' ) -prune -exec rm -rf {} +
*.so
にも注意してください 引用符で囲む必要があります。引用符で囲むと、シェルによって.so
のリストに展開される可能性があります。 現在のディレクトリ内のファイル。
GNU -regex
に相当します -タイプ1は次のようになります:
find . ( -name build -o -name obj -o -name '*?.so' ) -prune -exec rm -rf {} +
GNU固有の構文を使用する場合は、-delete
を使用することもできます。 -exec rm -rf {} +
。 -delete
を使用 、GNU find
-depth
をオンにします 自動的。外部コマンドを実行しないため、より効率的であり、また、ディレクトリをシンボリックリンクに変更することで、誰かが間違ったファイルを削除する可能性がある競合状態を取り除くため、より安全です。 find
ファイルを検索し、rm
それを削除します(info -f find -n 'Security Considerations for find'
を参照してください。 詳細については)
find . -regextype posix-egrep -regex '.*/((obj|build)(/.*)?|.+.so)' -delete