1

このdiffコマンドは、このようなファイル/フォルダーの違いとともに詳細のリストを提供します

dirs=`diff -aq new_dir/ old_dir`

与えます:

Only in new_dir/: five Common subdirectories: new_dir/four and old_dir/four Common subdirectories: new_dir/one and old_dir/one

しかし、詳細のないフォルダー/ファイル名のみが必要です:5、4など。詳細はありません

私はこのようなことを試しました:

dirs=diff -aq new_dir/ old_dir | grep 'Only in new_dir/: *'

これは、フォルダーの違いのみを取得する正しい方法ではないと思います。これを解決するより良い方法はありますか?

私の望む出力:

five
seven 
six

ではない

Only in new_dir/: five 
Only in new_dir/: seven 
Only in new_dir/: six
4

2 に答える 2

2

次のようなことができます:

dir=$(diff -aq new_dir/ old_dir | awk -F": " '/Only in new_dir/{print $2}')
于 2013-07-08T17:36:14.793 に答える
2

dirAに存在しない(サブ) ディレクトリのみを知りたい場合はdirB、次のようにします。

comm -23 <(cd dirA; find . -type d -print | sort) <(cd dirB; find . -type d -print | sort)

ただし、ディレクトリの実際の内容は考慮されていません。に置き換えることで、逆のサブディレクトリを見つけるために上記を適応させることができますが、そうでdirBはありません。またはで共通のサブディレクトリを取得します。dirA-23-13comm -12

各ディレクトリ内のファイルやファイルの中身を気にすると大変なことになるのですが、ここではそうでもないようです...

于 2013-07-08T17:07:59.903 に答える