除外されたディレクトリを探す

除外されたディレクトリを探す

私はLinux(Ubuntu)を使用しています。

find | less  

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

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

.directoryfindコマンドから除外する方法

答え1

優秀同様のfindソリューション研究役に立つ説明が見つかりましたshで「find」の「-prune」オプションを使用する方法は?渡すローレンス・ゴンサルベス

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

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

または(名前なし)

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

(エスケープされた)括弧は、OR()の左右にテスト\(\)typenameと対応する操作(それぞれpruneと)を結合します。print-o

接続より優先順位が低いため、-o必要に応じて括弧を省略できます。多くのfind実装では、最後の-print

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

答え2

見学するackhttp://betterthangrep.com/

適切なデフォルトの除外フォルダセットを持つことに加えて(たとえば、.hgはデフォルトでは除外されます)、新しいフォルダを除外することも簡単です。

ack --ignore-dir=.directory search_term

ファイルリストを検索するユースケースに戻すには、-f次のようにこのオプションを使用できます。

ack -f --ignore-dir=.directory

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

ヒント:.ackrcファイルに一般的なコマンドラインオプション(除外フォルダなど)を配置します。

答え3

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

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

関連情報