diffコマンドで差分が発見されたファイル名のみを出力する方法 †例えば、旧バージョンのソースファイルと新バージョンのソースファイルとの差分があるファイル名一覧のみ表示したい場合などがありませんか? diffに-qオプションを利用して比較してみる。 †今回はPostgreSQLのソースファイルをダウンロードして比較をしてみます。 ダウンロードしたファイルは、postgresql-9.1.1.tar.gz, postgresql-9.0.5.tar.gz の2つです。 $ diff -rq postgresql-9.1.1 postgresql-9.0.5 ファイルpostgresql-9.1.1/.gitignoreとpostgresql-9.0.5/.gitignoreは違います ファイルpostgresql-9.1.1/COPYRIGHTとpostgresql-9.0.5/COPYRIGHTは違います ファイルpostgresql-9.1.1/GNUmakefile.inとpostgresql-9.0.5/GNUmakefile.inは違います <snip> postgresql-9.1.1/contrib/adminpackだけに発見: adminpack.control postgresql-9.0.5/contrib/adminpackだけに発見: adminpack.sql.in postgresql-9.0.5/contrib/adminpackだけに発見: uninstall_adminpack.sql <snip> ファイルpostgresql-9.1.1/src/tutorial/funcs.sourceとpostgresql-9.0.5/src/tutorial/funcs.sourceは違います ファイルpostgresql-9.1.1/src/tutorial/funcs_new.cとpostgresql-9.0.5/src/tutorial/funcs_new.cは違います ファイルpostgresql-9.1.1/src/tutorial/syscat.sourceとpostgresql-9.0.5/src/tutorial/syscat.sourceは違います ファイルpostgresql-9.1.1/src/win32.makとpostgresql-9.0.5/src/win32.makは違います 上記の実行結果を見ると異なるファイルと片方にしか存在しないファイル名が表示されているのがわかります。 その他 †出力が日本語だと大変わかりやすいのですが、英語表記の出力にしたい場合は、LANG=Cを付けて実行します。 $ LANG=C diff -rq postgresql-9.1.1 postgresql-9.0.5 Files postgresql-9.1.1/.gitignore and postgresql-9.0.5/.gitignore differ Files postgresql-9.1.1/COPYRIGHT and postgresql-9.0.5/COPYRIGHT differ Files postgresql-9.1.1/GNUmakefile.in and postgresql-9.0.5/GNUmakefile.in differ <snip> Only in postgresql-9.1.1/contrib/adminpack: adminpack.control Only in postgresql-9.0.5/contrib/adminpack: adminpack.sql.in Only in postgresql-9.0.5/contrib/adminpack: uninstall_adminpack.sql <snip> |