コンパイルされたデータをすべて削除する必要があります:
-
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