GNU/Linux >> Linux の 問題 >  >> Linux

Linux:ファイルを比較せずにディレクトリ構造を比較する

次のコマンド (最初のディレクトリを directory1 に、2 番目のディレクトリを directory2 に置き換える場合) は、探していることを迅速に実行する必要があります。

find directory1 -type d -printf "%P\n" | sort > file1
find directory2 -type d -printf "%P\n" | sort | diff - file1

基本的な原則は、ベース directoryN ディレクトリに対するサブディレクトリ パスを含むすべてのディレクトリを出力することです。

一部のディレクトリ名に改行があり、他のディレクトリ名にない場合、これは失敗する可能性があります (奇妙な出力が生成されます)。


vimdiff <(cd dir1; find . | sort) <(cd dir2; find . | sort)

共通セクションが折り畳まれた 2 つのディレクトリ階層を並べて表示します。


私は通常 rsync を使用します このタスク:

rsync -nav --delete DIR1/ DIR2

十分に注意してください 常に -n を使用する 、別名 --dry-run 、オプション、またはディレクトリを同期 (内容を変更) します。

これにより、ファイルの変更時間とサイズに基づいてファイルが比較されます... 思う それがあなたが本当に望んでいることですか、それとも少なくともそうしてもかまいませんか? もっと速くしてほしいと思っているだけのように感じました ファイルの内容の違いを無視する必要があるわけではありません。同じ名前の異なるファイルをリストしたくない場合は、 --ignore-existing を追加すると思います オプションはそれを行います。

/ を入れないことにも注意してください DIR1の終わりに ディレクトリを比較します DIR1 内容 DIR2 の .

出力は少し冗長になりますが、どのファイル/ディレクトリが異なるかがわかります。 DIR2 に存在するファイル/ディレクトリ DIR1 ではありません deleting という単語で始まります .

状況によっては、@slartibartfast の回答の方が適切かもしれませんが、-type d を削除する必要があります。 ディレクトリ以外のファイルのリストを有効にするオプション。 rsync 比較するファイル/ディレクトリの数が多い場合は、より高速になります。


Linux
  1. Linuxでmvなしでファイルを移動する

  2. Linux でのファイル/ディレクトリの最大数は?

  3. Linux ディレクトリ内のファイルを再帰的にカウントする

  1. 巨大なディレクトリ ツリーを比較する最適な方法

  2. Linux でバイナリ ファイルを比較するにはどうすればよいですか?

  3. Linuxでファイルをコピーせずに最上位のフォルダー構造をコピーする

  1. Linuxで特定のディレクトリまたは別のディレクトリにtarファイルを抽出する方法

  2. Linux – Unix / linuxファイルのディレクトリ構造情報をどのように検査しますか?

  3. LinuxのNOTディレクトリのディレクトリ内のファイルのみを削除します