Различные файлы двух каталогов

Google не оставляет U между серверами, и я предполагаю, что они заинтересованы управлением теплом. Всегда интересный смотреть, как крупные игроки делают задание. Вот видео одного из их центра обработки данных: http://www.youtube.com/watch?v=zRwPSFpLX8I&feature=player_embedded

Перейдите непосредственно к 4:21 для наблюдения их серверов.

7
задан 28 October 2009 в 21:59
7 ответов

Вы ищете

diff -rq (dir1) (dir2)

Подтверждение концепции:

#!/bin/sh
#create our test
mkdir -p /tmp/a/b
echo "test" >> /tmp/a/c
mkdir -p /tmp/a/d/e
echo "blah" >> /tmp/a/d/e/f #only exists here
mkdir -p /tmp/q/b
echo "testing" >> /tmp/q/c #/tmp/a/c shouldnt match
mkdir -p /tmp/q/d/e
echo "blah" >> /tmp/q/d/e/g #only exists here
diff -rq /tmp/a /tmp/q

результаты в:

Files /tmp/a/c and /tmp/q/c differ
Only in /tmp/a/d/e: f
Only in /tmp/q/d/e: g
17
ответ дан 2 December 2019 в 23:12

Просто необходимо включать флаг-q для создания этого резюме:

# diff -q dir1 dir2
Files dir1/both and dir2/both differ
Only in dir1/: one
Only in dir2:/ two
7
ответ дан 2 December 2019 в 23:12
  • 1
    При необходимости в подкаталогах, добавляет флаг-r также. –  djhowell 28 October 2009 в 22:11

Для нахождения дублирований, Вы одно использование:

fdupes -r1 dir1 dir2

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

Если Вы используете

fdupes -rd dir1 dir2

это предложит Вам, какой файл сохранить (другие будут удалены). Чрезвычайно полезный для удаления дублирований (я действительно делал хорошее использование из него с моими фотографиями),

Примечание: да, я знаю, что вопрос не был точно об этом, но возможно он может помочь ему или другим ;)

3
ответ дан 2 December 2019 в 23:12

Вы могли попробовать разность ls:

ls A > a.txt
ls B > B.txt
diff a.txt b.txt

Ни одна команда, но это должно работать.

1
ответ дан 2 December 2019 в 23:12
  • 1
    На самом деле это wouldn' t быть слишком твердым для создания сценария, который делает это автоматически и моется после себя. Я мог записать такой сценарий, но кто-то еще мог бы предоставить лучший ответ. –  Josh 28 October 2009 в 22:08
  • 2
    Другой people' s ответы diff -q dir1 dir2 намного лучше, чем мой! –  Josh 28 October 2009 в 22:24

Классический ответ является командой 'dircmp'. Это имеет свои бородавки (передающий вывод по каналу через 'PR' для нумерации страниц его, например), но если дал бы Вам список объектов только в каталоге один или каталоге два, и затем для общих файлов, это сообщает о 'том же' или 'отличающийся' (и тип файла для нефайлов - каталоги, и т.д.).

'Разность - запрос' выглядит эквивалентным или лучше, чем вывод от 'dircmp'.

1
ответ дан 2 December 2019 в 23:12

Если Вы хотите, сравнивают файлы на основе, например, размер, который можно сделать:

# ls -al DIR_1 |awk '{print $5, $9}'|sort > 1.txt
# ls -al DIR_2 |awk '{print $5, $9}'|sort > 2.txt

и, чем:

# diff 1.txt 2.txt

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

3
ответ дан 2 December 2019 в 23:12

Я задал несколько подобный вопрос на Переполнении стека, и ответы, которые я получил, могут представлять интерес для Вас. Я особенно интересовался нахождением недостающих файлов при сравнении двух каталогов.

Я также указал, что решение должно иметь дело с переименованными файлами (например, если файл A, который был в каталоге 1, также присутствует в каталоге 2, но был переименован, сценарий должен знать об этом).

Ответ, который я выбрал (это наверху) довольно полезен. Это могло бы быть достойное внимания как начальная точка для Вашего сценария.

0
ответ дан 2 December 2019 в 23:12

Теги

Похожие вопросы