- ベストアンサー
dirの差分の取得
シェルスクリプトで2つのdir(下階層あり)の差分をとって差分があるもののみの情報を結果として出力したいのですがいい方法が思いつきません。いい方法はないでしょうか?
- みんなの回答 (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|" )
その他の回答 (2)
- kmee
- ベストアンサー率55% (1857/3366)
どうしたいかが今一つはっきりしませんが。 diff の -r オプションは使えませんか? -q と組合わせるとか
補足
diffコマンドの出力はだいたいはいいのですが、問題点がいくつかあります。 dirの指定を絶対パス指定でおこなわなければならないので結果が非常に見づらいです。 今やりたい差分はdirの構成はほぼ同じでdirの増減を表示する方法はなんとか作れたのであとは差異があるものの表示をおこないたいと思っています。 たとえばdirのAとBの差分を取って以下の様な出力を理想としています。 差異があるもの A/aa/aaa B/aa/aaa 差異のないものは非出力
- yambejp
- ベストアンサー率51% (3827/7415)
>差分をとって差分があるもののみの情報を結果として出力 ここでいう差分はファイル名のみチェックなのでしょうか? それともサイズや時間やパーミッションまでチェックするのでしょうか? また出力とは標準出力すればいいのでしょうか? おそらく「rsync -avn」あたりを利用するのが手っ取り早いと思います (標準コマンドではないですがインストールしておくと便利)
補足
言葉足らずの説明で申し訳ありません。”差分をとって差分があるもののみの情報を結果として出力”と言っているのは dirの差分なので差異があるかないかのチェックしかできないと認識しているので差異のあるdirのリスト出力(サブdir含む)とdir内にテキストファイルがあればその中身の差分が出力されればベストです。
お礼
まだ、正解にはたどりついていませんが、なんとか指摘していただいた方法でやりたいことはできそうな見込みがつきました。有益なアドバイスありがとうございました。