2012-01-19 7 views
1

トリッキー質問を見つけ、私はそれが私には思えるのはこの本より簡単に確信しています。 次のように私は現在、findコマンドを使用しています:私カピストラーノレシピでバッシュは、現在のフォルダと#名前#サブフォルダに私のような、bashのnoobのための再帰的

run "find #{current_release}/migration/ -name '*.sql'| sort -n | xargs cat >#{current_release}/#{stamp}.sql" 

問題は#{current_release} /移行は/サブフォルダが含まれている、と私は私が知っていること、それがターゲット環境に基づいている(それの名前に応じて、これらを1つだけ含まれるようにfindコマンドをしたいと思います。

復習として、フォルダ構造が

Folder 
|- sub1 
|- sub2 

であると私は例えばONLY SUB1に再帰する指定検索をしようとしています。私はどのように見つけることができなかった、これが可能であると確信して

。 感謝。

+0

'find#{current_release}/migration/sub1'はあなたが望むものではありませんか? – spatz

+0

いいえ、私はおそらくよく説明しませんでした。目標は、現在のフォルダーと指定されたサブフォルダーにあるすべてのファイルをAT ONCEにリストすることですが、他のサブフォルダーは指定しないでください。 – pixelboy

+0

私は自分の答えを更新しました。 – spatz

答えて

2

検索する引数として指定するディレクトリを指定するだけです(例: find #{current_release}/migration/sub1 ...

編集:解説に従って、findには-maxdepth引数を使用して、再帰の深さを制限する必要があります。たとえば、find firstdir firstdir/sub1 -maxdepth 1を使用できます。

+1

完璧、ありがとう、maxdepthオプションについて知りませんでした! – pixelboy

+1

@pixelboy '-and -not -path'を使って、' find'で検索したくないパスを指定することもできます。 –

0

追加するだけですあなたのfind呼び出しにその:

find #{current_release}/migration/sub_you_want -name ... 

あなたが欲しいのサブディレクトリの決意を作る方法に応じて、あなたはそれだけでなく、スクリプトにできるはずです。

+0

目的は、現在のフォルダーと指定されたサブフォルダーにあるすべてのファイルを特定しますが、他のサブフォルダーはありません。 – pixelboy

+1

申し訳ありません - 質問の「現在のディレクトリ」の部分が欠落しています。 @spatzには、sub1で再帰する必要がないと仮定しています。 – sarumont

関連する問題