ブログ

diffコマンドでサブディレクトリを比較する方法

at_shiita.ishigaki
2021年11月2日 9時16分

diffコマンドをオプション無しで実行しても、サブディレクトリの中のファイルは比較されません。
サブディレクトリを比較するには-rオプションを使用します。
※ディレクトリ構成・ファイルの中身は以下のようになります。ここでは例として、file1とfile2を比較します。

root/
   ├ file1
   │  ├ hoge.txt
   │  └ fuga
   │      └ fuga.txt
   └ file2
      ├ hoge.txt
      └ fuga
          └ fuga.txt
[armadillo ~]# cat file1/hoge.txt                                            
hoge1                                                                           
hoge2                                                                           
hoge3 

[armadillo ~]# cat file2/hoge.txt                                            
hoge1                                                                           
hoge2                                                                           
hoge3
[armadillo ~]# cat file1/fuga/fuga.txt                                       
fuga1                                                                           
fuga2                                                                           
fuga3
[armadillo ~]# cat file2/fuga/fuga.txt                                       
fuga1                                                                           
fuga2 
[armadillo ~]# diff file1 file2
Common subdirectories: file1/fuga and file2/fuga
diff file1/hoge.txt file2/hoge.txt
4d3
<
[armadillo ~]# diff -r file1 file2
diff -r file1/fuga/fuga.txt file2/fuga/fuga.txt
3d2
< fuga3
diff -r file1/hoge.txt file2/hoge.txt
4d3
<

ファイルの中身が同じか違うかのみを調べるには-qオプションを使用します。

[armadillo ~]# diff -rq file1 file2
Files file1/fuga/fuga.txt and file2/fuga/fuga.txt differ
Files file1/hoge.txt and file2/hoge.txt differ

また、特定のファイルを比較しない場合は-xオプションを使用します。
※ここでは例として、hoge.txtの比較を除きます。

[armadillo ~]# diff -rx hoge.txt file1 file2
diff -rx hoge.txt file1/fuga/fuga.txt file2/fuga/fuga.txt
3d2
< fuga3