Я запускаю 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