2

2 つのディレクトリ構造があるとします。

/var/www/site1.prod
/var/www/site1.test

find(1)/var/www/site1.testを使用して、 の対応するファイルよりも新しい のファイルを表示したいと考えています/var/www/site1.prod

find(1)でこれを行うことはできますか?

4

5 に答える 5

8

rsync -n を使用することもできます

rsync -av -n /var/www/site1.test /var/www/site1.prod

するべきです。

于 2009-02-24T20:07:14.957 に答える
4

検索を使用して

cd /var/www/site1.test
find . -type f -print | while read file ; do
  [ "$file" -nt /var/www/site1.prod/"$file" ] && echo "File '$file' changed"
done

これは、空白を含むファイル名で機能するだけでなく、大量のファイルでも機能します。

Eddieのコメントに従って、変更されたファイルと欠落しているファイルを区別するには、

cd /var/www/site1.test
find . -type f -print | while read file ; do
  [ "$file" -nt /var/www/site1.prod/"$file" ] && reason=changed
  [ \! -e /var/www/site1.prod/"$file" ] && reason=created
  [ -n "$reason" ] && echo "$file $reason"
done
于 2009-02-24T20:11:47.880 に答える
2

一人で見つけることはできないと思いますが、次のようなことはできます

$ cd /var/www/site1.test
$ files=`find .`
$ for $f in $files; do
     if [ $f -nt /var/www/site1.prod/$f ]; then echo "$f changed!"; fi;
  done
于 2009-02-24T20:00:58.577 に答える
0

-fprintfオプションを見ると、ファイル名と変更時刻をリストした2つのファイルに出力される2つの検索結果を作成できるはずです。これで、2つのファイルを比較して、何が変更されたかを確認できるはずです。

于 2009-02-24T20:02:27.230 に答える
0

あなたが特に新しいものを求めていることは理解していますが、すべての選択肢を知っておくのは常に良いことだと思います。

diff -urdir1dir2を使用します。

タイムスタンプが変更された可能性がありますが、変更されていない可能性がありますが、内容が同じであるかどうかは必ずしもわかりません。内容が変更されたかどうかをDiffが教えてくれます。内容を本当に見たくない場合は、diff -rqを使用して、変更されたファイルだけを確認してください。

于 2009-02-24T20:17:03.670 に答える