2010-12-27 9 views
-1

パターンに一致するファイルを見つけて見つけたら、それらをコピーするbashスクリプトを作成しました。 私の考えは基本的に次のとおりです。Bashエコーとアクションの注文

  • エコーここにファイルをリスト
  • エコー "
  • エコーをそれをテストするために、次の上
  • それをコピー
  • 「1を発見した」「開始」 done "

しかし、基本的にはスクリプトがその仕事をしており、エコーイン私のスクリプトがすべての要求を処理していたかのように、関連するファイルごとに最後に "見つかったもの"が1つ見つかりました。私は間違って何をしていますか?ありがとう!

+4

bashスクリプトを投稿してください – Oli

+0

"私は持っているようにしました。 – marcog

+1

私はこの戦略でMicrosoftのにおいをします:-)。あなたはこの種の仕事にあなたのアプローチを再考する必要があります。膨大なリストを作成してその上を歩くことは、悪いコード設計のシグナルです(ただし、これはいつも避けることはできません)。 – karatedog

答えて

2

これらの非常に少量の情報に基づいて、「構文エラー」から「最終的にシェルスクリプトの仕組みを理解できない」までのすべての問題が発生する可能性があります。 これは「回答」なので、私はあなたに質問に答えようとします。投影タスクが唯一である場合、このないコマンドすでにある「見つかった場合は、ファイルパターンにマッチし、それらのコピーを見つける」:

$ find ./ -name "m*a*tch" -exec cp {} <destination> \; 

パターンに基づいてファイルを検索します「が見つかり」が、それは行うことができます1つの例はbashコマンドを実行することです。 "-exec"の後の文字列は、任意のシェルコマンド(複数)または既存のシェルスクリプトへの呼び出しさえできます。その行は "\;"で閉じなければなりません。 "{}"はパターンによって検出されたファイル名を表します。ここでfilenameはファイルへのパス全体を意味します。

一般的な考え方:もしあなたがLinuxで何かする必要があるのであれば、コマンドが既にそれをしている可能性が高いので、ドキュメントを読むことから始めて、知識を集める間に多くの作業を省くことができます。