スポンサーリンク
diff -sオプションで同一ファイルも抽出
※MACターミナル(BSD系)での動作確認です。
例えば、下記のディレクトリがあったとします。
$ tree . ├── dir001 │ ├── dir │ │ └── file2.txt │ ├── file1.txt │ └── file3.txt └── dir002 ├── dir │ └── file2.txt ├── file1.txt └── file3.txt 4 directories, 6 files
参考:diffの-sオプションで差分がなく同一ファイルの場合にメッセージを表示
diff -sをすると下記のようになります。
$ diff -rs dir001 dir002 Files dir001/dir/file2.txt and dir002/dir/file2.txt are identical Files dir001/file1.txt and dir002/file1.txt are identical diff -rs dir001/file3.txt dir002/file3.txt 1d0 < hello
スポンサーリンク
diffコマンド時に差分のないファイルを削除する
まずは、awkでファイルパスのみ抽出します。
参考:awkで特定の列を抽出する
$ diff -rs dir001 dir002 | grep identical$ | awk '{print $2}' dir001/dir/file2.txt dir001/file1.txt
xargsでファイルパスをrmコマンドに渡します
$ diff -rs dir001 dir002 | grep identical$ | awk '{print $2}' | xargs -I{} rm {}
下記が実行結果になります。
参考:[シェル]treeの-Pオプションで特定のファイルのみ表示する
$ tree . ├── dir001 │ ├── dir │ └── file3.txt └── dir002 ├── dir │ └── file2.txt ├── file1.txt └── file3.txt 4 directories, 4 files
スポンサーリンク