假设我有两个目录结构:
/var/www/site1.prod
/var/www/site1.test
我想使用find(1)查看/var/www/site1.test
中比/var/www/site1.prod
中的文件更新的文件。
我可以使用find(1)执行此操作,如果是,请执行此操作?
答案 0 :(得分:8)
您也可以使用rsync -n
rsync -av -n /var/www/site1.test /var/www/site1.prod
应该这样做。
答案 1 :(得分:4)
使用find ,
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
答案 2 :(得分: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
答案 3 :(得分:0)
如果查看-fprintf选项,您应该能够创建两个查找,输出到两个文件中,列出文件名和修改时间。然后,您应该能够区分两个文件以查看更改的内容。
答案 4 :(得分:0)
我知道您特别要求更新,但我认为了解您的所有选择总是好的。
我会使用diff -ur dir1 dir2。
也许时间戳改变了,也许它没有改变,但这并不一定会告诉你内容是否相同。 Diff会告诉您内容是否已更改。如果你真的不想看到内容,请使用diff -rq来查看更改的文件。