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 选项,您应该能够创建两个输出到两个文件中,其中列出了文件名和修改时间。然后,您应该能够比较这两个文件以查看发生了什么变化。

于 2009-02-24T20:02:27.230 回答
0

我了解您特别要求更新,但我认为了解您的所有选择总是好的。

我会使用 diff -ur dir1 dir2。

也许时间戳改变了,也许它没有改变,但这并不一定告诉你内容是否相同。Diff 会告诉你内容是否发生了变化。如果您真的不想查看内容,请使用 diff -rq 来查看已更改的文件。

于 2009-02-24T20:17:03.670 回答