2009-11-20 2 views
0

Предположим, у меня есть сценарий, который генерирует возрастающие имена папок с течением времени (100, 101, 102, 103, 104 и т. Д.). Эти папки синхронизируются между машинами и есть шанс неудачи создания для любой папки на системе 2.Найти недостающие числа в непрерывных именах файлов (расширенные ls & find)

система 1 всегда синхронно: 100/ 101/ 102/ 103/ 104/ и т.д. ...

система 2 может иметь ошибки: 100/ 102/ 103/ и т.д ...

(как вы можете видеть, 101/& 104/пропускаете по системе 2)

Как я могу сгенерировать список всех отсутствующих папок в Системе 2?

P.S. Rsync на самом деле не вариант, потому что фактическое количество папок невероятно велико.

+0

- это оба каталога, доступные с одной машины или вам нужно решение для поперечной машины? –

ответ

2

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

+0

ls должен сортировать вещи, но на всякий случай это не так, или сортировка на двух хостах различна, вы можете обрабатывать вывод для сортировки. – Suppressingfire

0

просто создать список успешных творений, как они происходят

1

Вы могли бы сделать что-то вроде этого:

% ls -1 System1 > ls.System1   # Use the -1 flag to ensure 1 dir per line 
% ls -1 System2 > ls.System2 
% comm -23 ls.System1 ls.System2 
101 
104 

Команда Прдч может показать вам, что является общим для обоих, уникальный для f1, или уникальным к f2:

comm -12 f1 f2 # common to both 
comm -23 f1 f2 # unique to f1 
comm -13 f1 f2 # unique to f2 
0

вы можете использовать diff. если вы уже сопоставили систему2 с путём

diff system1/path system2/path 
Смежные вопросы