プロが教える店舗&オフィスのセキュリティ対策術

シェルスクリプトで2つのdir(下階層あり)の差分をとって差分があるもののみの情報を結果として出力したいのですがいい方法が思いつきません。いい方法はないでしょうか?

A 回答 (3件)

> dirの指定を絶対パス指定でおこなわなければならないので結果が非常に見づらいです。


> たとえばdirのAとBの差分を取って以下の様な出力を理想としています。

sedなりawkなりで加工すればよいでしょう。
例えば
(dir="/home/hoge"; diff -rq $dir/A $dir/B | sed "s|Files ${dir}/\\(.*\\) and ${dir}/\\(.*\\) differ|\\1 \\2|" )
    • good
    • 0
この回答へのお礼

まだ、正解にはたどりついていませんが、なんとか指摘していただいた方法でやりたいことはできそうな見込みがつきました。有益なアドバイスありがとうございました。

お礼日時:2014/04/10 09:53

どうしたいかが今一つはっきりしませんが。


diff の -r オプションは使えませんか?
-q と組合わせるとか

この回答への補足

diffコマンドの出力はだいたいはいいのですが、問題点がいくつかあります。
dirの指定を絶対パス指定でおこなわなければならないので結果が非常に見づらいです。
今やりたい差分はdirの構成はほぼ同じでdirの増減を表示する方法はなんとか作れたのであとは差異があるものの表示をおこないたいと思っています。

たとえばdirのAとBの差分を取って以下の様な出力を理想としています。
差異があるもの
  A/aa/aaa   B/aa/aaa

差異のないものは非出力

補足日時:2014/04/08 10:31
    • good
    • 0

>差分をとって差分があるもののみの情報を結果として出力



ここでいう差分はファイル名のみチェックなのでしょうか?
それともサイズや時間やパーミッションまでチェックするのでしょうか?

また出力とは標準出力すればいいのでしょうか?

おそらく「rsync -avn」あたりを利用するのが手っ取り早いと思います
(標準コマンドではないですがインストールしておくと便利)

この回答への補足

言葉足らずの説明で申し訳ありません。”差分をとって差分があるもののみの情報を結果として出力”と言っているのは
dirの差分なので差異があるかないかのチェックしかできないと認識しているので差異のあるdirのリスト出力(サブdir含む)とdir内にテキストファイルがあればその中身の差分が出力されればベストです。

補足日時:2014/04/08 15:22
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!