0

以下の2つのコマンドは、cygwinの下のbashでまったく同じファイルリストを生成します。

find ../../../../.. -name "*.o" -and -path "*/common/*"
find ../../../../.. -name "*.o" -and -path "*/common/*" -prune

このリストには、次のようなファイルが含まれます。

../../../../../platform/abc/common/ppng.o
../../../../../platform/abc/common/variant/pxx.o

リストには、パス名に「common」が含まれていないファイルは含まれていません。

私がやろうとしているのは、「共通の」ディレクトリコンポーネントを持つものを除いて、すべてのディレクトリでオブジェクトファイルを見つける(そして最終的には削除する)ことです。私は運がなくて他の約25の組み合わせを試しました。

ポインタはありますか?

4

1 に答える 1

1

afaik、-pathは正規表現を取りません。私はあなたがしたいことはあなたのすべてのオブジェクトファイルを見つけて(.*.o)そしてすべての共通のディレクトリを除外することだと思います(.*/common/.*):

find . -regex '.*.o' -and -not -regex '.*/common/.*'

必要に応じて、大文字と小文字を区別しないようにすることができ-iregexます。

于 2012-04-24T15:48:04.547 に答える