Рекурсивный diff работает очень медленно - проверка содержимого каталогов

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

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

Привет, ребята, Я выполняю сравнение двух каталогов рекурсивно с несколькими параметрами. каталоги довольно большие, однако я пытаюсь просто увидеть различия в содержимом папок, а не между файлами, используя параметр -q (правильно ли я использую?)

Я также пробовал пробный запуск rsync , это, похоже, займет столько же времени. вывод проходит через sed, я пробовал без него, похоже, это ни на что не влияет. Я также игнорирую скрытые файлы. Я думаю, что могу неправильно использовать diff -q, чтобы просто сравнить содержимое двух каталогов.

Я использовал блок кода из другой подсказки, чтобы узнать, сколько времени длилось сравнение ОДНОГО из этих каталогов (1 каталог, 14 подкаталогов), и это заняло 88 минут. однако каждый файл представлял собой 30-минутное телешоу, поэтому, если diff сравнивает эти файлы, это имеет смысл, но я думал, что -q не приведет к тому, что этого не произойдет?

также, один каталог монтируется поверх AFP, другой - внешний диск, подключенный к Firewire. это не имеет значения, потому что я скопировал оба каталога локально, и сравнение заняло одинаковое количество времени. У меня ДЕЙСТВИТЕЛЬНО есть решение этой проблемы - я прогнал ls -1 по обоим каталогам и сравнил вывод - но почему diff так долго запускается? есть предложения?

#!/bin/bash

before="$(date +%s)"

diff -r -x '.*' /Volumes/directory1/ /Volumes/directory2/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory3/ /Volumes/directory4/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory5/ /Volumes/directory6/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory7/ /Volumes/directory8/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory9/ /Volumes/directory10/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt
diff -r -x '.*' /Volumes/directory11/ /Volumes/directory12/ | sed 's/^.\{24\}//g' > /Volumes/stuff.txt

after="$(date +%s)"
elapsed_seconds="$(expr $after - $before)"
echo Elapsed time for code block: $elapsed_seconds
5
задан rick 17 March 2011 в 20:17
поделиться