С Unix find (1), как мне найти файлы в одном дереве новее, чем в другом дереве? - PullRequest
2 голосов
/ 24 февраля 2009

Допустим, у меня есть две структуры каталогов:

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

Я хочу использовать find (1) для просмотра файлов, которые новее в /var/www/site1.test, чем их аналоги в /var/www/site1.prod.

Могу ли я сделать это с помощью find (1) , и если да, то как?

Ответы [ 5 ]

8 голосов
/ 24 февраля 2009

Вы также можете использовать rsync -n

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

должен это сделать.

4 голосов
/ 24 февраля 2009

Использование 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

Это будет работать с именами файлов, содержащими пробелы, а также работать с большим объемом файлов.

Чтобы различать измененные и отсутствующие файлы, согласно комментариям Эдди,

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 голосов
/ 24 февраля 2009

Я думаю, что вы не можете сделать это с помощью find, но вы можете сделать что-то вроде

$ 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
0 голосов
/ 24 февраля 2009

Я понимаю, что вы специально спрашивали о более новом, но я думаю, что всегда хорошо знать все ваши варианты.

Я бы использовал diff -ur dir1 dir2.

Может быть, метка времени изменилась, а может, и нет, но это не обязательно говорит о том, что содержимое совпадает. Дифф скажет вам, если содержание изменилось. Если вы действительно не хотите видеть содержимое, используйте diff -rq, чтобы просто увидеть файлы, которые изменились.

0 голосов
/ 24 февраля 2009

Если вы посмотрите на опцию -fprintf, вы сможете создать две находки, которые будут выводиться в два файла с указанием имени файла и времени модификации. После этого вы сможете просто просмотреть два файла, чтобы увидеть, что изменилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...