【linux】findコマンドで「.svnディレクトリの中以外」(pruneを使う)
問題
findコマンドでファイルを探すときに、.git や .svn フォルダなどを除外したいのですが、どう書くとよいですか。
答え
-prune アクションを使いましょう。
find . -name .svn -prune -o -name "hoge.php" -print
以下のような意味となる。
(条件「名前が.svn」 かつ アクション prune(何もしないで、常に真)) または (条件「名前が”hoge.php”」 かつ アクション print(ファイル名を出力して、常に真))
(A and B) or (C and D) の形で、or の左がtureなら右は評価しないとか、and は左がfalseならそこで評価が終わるといった動きをする。
以下のような動きとなる。
「または」の左を評価して、名前が.svnにマッチしたら何もしないで終わることになり、名前が.svnにマッチしなかったら、右も評価して、条件が真となればprintして終わり、条件が偽となればそこで終わり。
コメント