web-dev-qa-db-ja.com

(中間ファイルに書き込むことなく)2つのディレクトリでファイル名を比較する方法は?

私は次の線に沿って何かをしようとしています:

diff `ls -1a ./dir1` `ls -1a ./dir2`

しかし、それは明白な理由で機能しません。これを(1行で)達成するより良い方法はありますか?

ls -1a ./dir1 > lsdir1
ls -1a ./dir2 > lsdir2
diff lsdir1 lsdir2

ありがとう

31
bguiz

あなたは近くにいた。 bashでは、コマンド置換ではなく、 プロセス置換 が必要です。

diff <(ls -1a ./dir1) <(ls -1a ./dir2)
diff -rq dir1 dir2

-rオプションを使用して、ディレクトリツリー全体をウォークし、各ツリーの比較可能なポイントで発生するサブディレクトリとファイルの違いを再帰的にチェックします。トリックは、行ごとの比較を抑制するために-qオプションを使用することです

10
fseto