Я улучшаю script listing duplicated files, который я написал в прошлом году (см. Второй скрипт, если вы следуете ссылке).match pathname в файле с двойным нулевым байтом-разделителем
Разделитель записи вывода duplicated.log
представляет собой нулевой байт вместо возврата каретки \n
. Пример:
$> tr '\0' '\n' < duplicated.log
12 dir1/index.htm
12 dir2/index.htm
12 dir3/index.htm
12 dir4/index.htm
12 dir5/index.htm
32 dir6/video.m4v
32 dir7/video.m4v
(в этом примере, пяти файлов dir1/index.htm
... и dir5/index.htm
имеют одинаковый md5sum
и их размер составляет 12 байт Остальные два файла dir6/video.m4v
и dir7/video.m4v
имеют такое же md5sum
и их размера контента (du
.) составляет 32 байта.)
поскольку каждая строка оканчивается нулевым байтом (\0
) вместо символа возврата каретки (\n
), пустые строки представлены в виде двух последовательных нулевых байтов (\0\0
).
Я использую нулевой байт в качестве разделителя строк, потому что путь-имя-файла может содержать символ возврата каретки.
Но, делая, что я столкнулся с этим вопросом:
Как «Grep» все дубликаты указанного файла из duplicated.log
?
(например, как получить дубликаты dir1/index.htm
?)
мне нужно:
$> ./youranswer.sh "dir1/index.htm" < duplicated.log | tr '\0' '\n'
12 dir1/index.htm
12 dir2/index.htm
12 dir3/index.htm
12 dir4/index.htm
12 dir5/index.htm
$> ./youranswer.sh "dir4/index.htm" < duplicated.log | tr '\0' '\n'
12 dir1/index.htm
12 dir2/index.htm
12 dir3/index.htm
12 dir4/index.htm
12 dir5/index.htm
$> ./youranswer.sh "dir7/video.m4v" < duplicated.log | tr '\0' '\n'
32 dir6/video.m4v
32 dir7/video.m4v
Я думал о каких-то вещах, как:
awk 'BEGIN { RS="\0\0" } #input record separator is double zero byte
/filepath/ { print $0 }' duplicated.log
... но filepath
может содержать слэш символы /
и многие другие символы (цитаты, возврат каретки ...).
я, возможно, придется использовать perl
, чтобы справиться с этой ситуацией ...
Я открыт для любых предложений, вопросов, другие идеи ...
Я не понять, какие имена дублируются в вашем примере –
Hi @glennjackman. Спасибо за отзыв: я обновил свой вопрос, надеюсь, что это будет более понятно, даже если вопрос становится слишком многословным: -/Удачи вам в ответе, наслаждайтесь! ;-) Cheers – olibre