Вывод ls -l
включает время модификации каждого файла, которое, скорее всего, будет различным для двух файловых деревьев, поэтому diff
сообщает о них.
Вы должны использовать find
s -printf '…'
вариант и печатать только соответствующую информацию.Это также сэкономит много ls
процессов.Сделайте это дважды на обоих деревьях, и результат можно будет сравнивать более разумно.
(Кстати, find
сообщает о файлах И папках, а ваш … -exec ls -al {} \;
в папке будет отображать его содержимое СНОВА - идругие шумы, такие как .
и ..
. Вы можете подавить это с помощью -d
, но, как я уже сказал, вам следует избегать использования ls
в целом, поскольку его основная цель заключается в списке (следовательно,(имя) содержимое каталога, а не stat
отдельных файлов.
При использовании diff
в параллельном режиме (-y
) он должен обрезать каждую строкув некотором пункте, потому что вы попросили его отобразить второй поток красиво и аккуратно прямо рядом с первым.По умолчанию выводится не более 130 символов в строке (я полагаю), но вы можете изменить это с помощью -W
.Лично я бы вообще избегал параллельного отображения, но здесь вы идете:
#!/bin/bash
diff -y -W 300 --suppress-common-lines \
<(find /path1/wp-content -printf '%u %g %m %P\n') \
<(find /path2/wp-content -printf '%u %g %m %P\n')
Посмотрите на man diff
и man find
(часть о -printf
) для каких вещейВы можете напечатать о файле, как его размер.Чтобы подавить папки из вывода find
, вы должны поставить -type f
перед частью -printf
(то есть только находить реальные файлы перед печатью).Мой пример может не полностью ответить на ваш вопрос, но вы поймете, что идея.
PS: diff
обычно выводит некоторые строки context рядом с разными линиями, чтобы людям и машинам было легченайдите эти строки в исходных файлах.Фактически, в параллельном режиме diff
будет отображать все по умолчанию - независимо от того, есть различия или нет.Опция --suppress-common-lines
подавит это.В обычном режиме (не бок о бок) эта опция также несколько изменит формат вывода diff
, включая <
и >
перед каждой отличающейся строкой.Может быть, этого должно быть достаточно и легко читаемым, поэтому вам вообще не нужен параллельный вариант.Просто попробуйте.