私のフォルダ構造は次のようになります:
/app
/app/data
...
/app/secondary
/app/secondary/data
/app
を含む/app/data
を再帰的に検索したい。 /app/secondary/data
は検索したくありません。これは私がこれまでに持っているものです:
ack --ignore-dir=data searchtext
ack --ignore-dir=secondary/data searchtext
最初のコマンドは両方のディレクトリを無視しており、2番目のコマンドはどちらも無視していません。 appフォルダー内から、ackコマンドはどのように見えますか?
この回答は2より前のバージョンのAck向けです この回答はAckのバージョン> = 2 。を参照してください
最初のものは両方ともサブディレクトリとして「データ」を持ち、デフォルトではackがサブディレクトリを検索するため、両方を無視しています。そのため、その名前のサブディレクトリは無視されます。残念ながら、2番目の方法も機能しません。これは私にとってはうまくいきます:
ack -a searchtext -G '^(?!.*secondary/data.*).*$'
すべてのファイルを検索する-aの代わりに、ack-grep --help = typesを参照して、特定のファイルタイプのみを検索します(例:--type = text)。
古いバージョンのackは、フォルダー名ではなくフォルダー名のみを取得できます。バージョン1.93_02以降、次の機能が追加されました。
1.93_02 Wed Oct 6 21:39:58 CDT 2010 [ENHANCEMENTS] The --ignore-dir option now can ignore entire paths relative to your current directory. Thanks to Nick Hooey. For example: ack --ignore-dir=t/subsystem/test-data
(from betterthangrep.com/Changes )
使用しているバージョンは--version
で確認できます。
ack --version