SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

【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して終わり、条件が偽となればそこで終わり。

関連するメモ

コメント