Какой лучший способ выполнить различие между списком каталогов? - PullRequest
1 голос
/ 12 апреля 2011

Мне интересно посмотреть список каталогов, сравнить предыдущий список с текущим списком каталогов и настроить скрипт для этого. Может быть, в Perl или в виде сценария оболочки.

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

Например, у меня сегодня есть следующие каталоги:

/foo/bar/staging/abc
/foo/bar/staging/def
/foo/bar/staging/a1b2c3

Следующий день будет выглядеть так, если каталог будет добавлен или переименован:

/foo/bar/staging/abc
/foo/bar/staging/def
/foo/bar/staging/ghi
/foo/bar/staging/a1b2c4

Ответы [ 3 ]

2 голосов
/ 12 апреля 2011

Возможно, есть лучшие способы, но обычно я делаю что-то вроде этого, чтобы запустить команду find в каждом корне каталога и направить вывод в отдельные файлы.Затем вы можете различать файлы, используя инструмент сравнения по вашему выбору.Если вы хотите отфильтровать определенные каталоги или файлы, вы можете добавить в конвейер некоторые команды grep или grep -v или поэкспериментировать с параметрами команды find.

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

cd /my/directory/one
find . -print | sort > /temp/one.txt

cd /my/directory/two
find . -print | sort > /temp/two.txt

diff /temp/one.txt /temp/two.txt
0 голосов
/ 24 апреля 2011

Вы также можете рассмотреть команду поиска, используя ключ -newer.

Использование:

find . -newer timefile.txt -print

Ключ -newer заставляет find возвращать список файлов, которые были созданы или обновлены после указанного времени модификации файла. В приведенном выше примере любой файл, созданный или обновленный после timefile.txt, будет возвращен. Вам нужно будет создать файл timefile.txt, скорее всего, один раз в день. Некоторые версии find имеют более новые варианты, которые сравниваются с другими отметками времени для файла (последнее изменение, последний доступ, последний созданный и т. Д.)

Однако этот метод не будет сообщать об удаленном файле. Ежедневная разница в списках файлов может сообщать об этом.

0 голосов
/ 12 апреля 2011

также проверьте команду inotifywait.позволяет контролировать файлы в RT.

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