除外ディレクトリを見つける


13

私はLinux(Ubuntu)を使用していますが、特定のディレクトリ(.hgなど)を除外したいのですが、

find | less  

リストから.hgディレクトリを除外するために次のことを試みましたが、動作しないようです。

find -type d \( ! -iname \.hg \)
find -type d \( ! -name \.hg \)
find -type d \( ! -iname .hg \)

.directoryfindコマンドで除外するにはどうすればよいですか

回答:


14

と同様のための研究findソリューション私は上の有用な説明を発見SHで「検索」の「-prune」オプションを使用する方法を?ローレンスゴンサルベス著。

次のようなものを使用できます。

find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)

または(名前なし)

find . \( -type d -name .hg -prune \) -o \( -type f -print \)

(エスケープ)かっこ\(\)グループ試験(type及びname)および対応するアクションは(prune及びprint、それぞれ)と共に左右のOR( -o)。

-o並置よりも優先順位が低いため、必要に応じて括弧を省略できます。多くのfind実装では、最終版をスキップすることもできます-print

find . -type d -name .hg -prune -o -type f -name "foo" -print

1
ソリューションを作成しようとしていましたが、まさにこれのようです。個人的には-prune、最初のセットのブラケット、および-type f -print2番目のセットの内側に入れて、and / or操作をより明確にするだけでしたが、それ以外の場合、これはスポットライトに見えます。
me_and

@me_andのコメントのおかげで、括弧(およびその推論)を改善しました。
fheub

2

ご覧くださいackhttp//betterthangrep.com/

既定の除外フォルダーの適切なセット(たとえば、.hgは既定の除外フォルダー)に加えて、新しいフォルダーを簡単に除外できます。

ack --ignore-dir=.directory search_term

ファイルのリストを探しているユースケースにこれを戻すには、次のような-fオプションを使用します。

ack -f --ignore-dir=.directory

複雑な検索/検索コマンドの作成から単純なackコマンドの作成に切り替えました。

ヒント:よく使用されるコマンドラインオプション(除外フォルダーなど)を.ackrcファイルに入れます。


find | less質問に基づいて、OPはファイルの単純なリストを探しています。これはどのように役立ちますか?
CVn

@MichaelKjörling答えで述べたように、-fオプションはファイルのリストを提供します。
ブライアンリーテム

-2

あなたが試すことができます

find \( ! -regex '.*/\.directory\(\|/.*\)' \)

これが、OPが要求したものとはまったく異なることを確認してください。
me_and

私はこれが彼の言うことだと思った.directory
-yuyichao
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.