2011-02-04 7 views
0
var=$(pwd);diff -x .DS* -r aa bb | cut -f3,4 -d' '| sed 's/\://' | awk -v "var=$var" 'BEGIN{OFS="/"} {split($2,a,"-"); a[1]=toupper(a[1]) if ($1 ~/^bb/) {print var, $1, $2 " " var, "aa"} 
else {print var, $1, $2 " " var, "bb"}}' | cp -r $(cut -f1 -d" ") $(cut -f2 -d" ") 

これは、2つのディレクトリを比較し、コピーの目的でソースとターゲットのアドレスを返します。意図した結果は、両方のフォルダがそれらの内部の同じファイルとフォルダで終わることです。awked行を使用するcp

cp-cut部分が機能しません。手動でcpを実行すると正しい結果が得られます。カット操作の出力はOKと思われます。

CP-カット句をオフのまま、スクリプトはこの

/Users/tom/Desktop/aa/AWK/awk-parse-email-add-or.textClipping /ユーザー/トムのような行を生成します/デスクトップ/ bb

これは、ソースファイルとターゲットディレクトリで、awkのクリッピングをbbフォルダにコピーするためのものです。

何人かの人が私が間違っている場所を示唆することはありますか?

トム

答えて

0

あなたはコマンド置換、$(cut -f1 -d" ")$(cut -f2 -d" ")を使用しているが、cutが入力を必要とするため、これらのコマンドは有効ではありません。

xargsを代わりに使用してみてください。最後のパイプを次のように変更してください。

| xargs -n 2 cp -r 
+0

あなたの提案には何か問題がありますが、混乱しています。私の慎重に構築されたパイプラインが生成する順序付けされたペア(ソースとターゲット)を使用して、目的のcpを実行するにはどうすればよいでしょうか? – Tom

+0

私は上記のスクリプトをcpとcut節を完全に省略して動作させています。スクリプトはスクリプト中にbashで処理できるテキストファイルに出力します。それはうまくいくが、私はパイプを介して直接行う方法があると思う。 – Tom

関連する問題