LINUX.ORG.RU

Поиск различных файлов с одинаковыми именами

 


0

2

Добрый день, подскажите, пожалуйста, как написать команду для следующей задачи:

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

В чем проблема то? Сравнить файлы с одинаковыми именами можно тем же md5sum, найти файлы поможет find.

папок

Если нужно под винду то форумом ошибся

alozovskoy ★★★★★ ()
Ответ на: комментарий от snaf

Нет, проблема возникшая на работе немного не по моей части, но я с башем вообще почти не знаком, только в общих чертах...

Mozg00FF ()
Ответ на: комментарий от alozovskoy

Я пытался написать что-то вроде:

find dir1 dir2 dir3 -type f -print0 | xargs -0 md5sum | grep file_ext | sort | uniq -w32 -D

но такая команда находит с одинаковыми хэшами, а мне нужно наоборот, к тому же в именах файлов там присутствует путь к папке...

Mozg00FF ()
Ответ на: комментарий от Mozg00FF
find dir1 dir2 dir3 -type f -name '*.ext' > ~/filelist
for i in `cat ~/filelist`; do echo -n $i " "; cat $i | md5sum; done | sort -k 2


что-то типа такого, наверное. с поправкой на имена с пробелами и прочее, прочее

slowpony ★★ ()

)))))0)))))))

Пользуйся поиском. Эту д/з уже решали на лоре не так уж и давно.

Язабан.

matrixd ()
Ответ на: комментарий от slowpony

Да, спасибо, похоже, но в результате работы команды выводится список всех файлов, просто отсортированных в нужном порядке. Проблема в том, что файлов около 100к, поэтому среди них найти именно нужные ещё надо.

Т.е. в разных папках, с одинаковыми именами но разной чек суммой.

Mozg00FF ()
Ответ на: комментарий от Mozg00FF

Хотя нет,список отсортирован по хэш суммам, так что это всё же не то видимо.

Результат этой команды выглядит так:

dir1/260b1d49-2de6-a58c-24bf9aa9-555de2ec.ext e60a95a5ef257626caeb9f3d609f3315 -

dir2/33c41094-b74c-40eb-1ae87bb4-4ef3ff46.ext e616b82119b1d25ca53b0e2198bbfea7 -

dir1/4c0246f9-380c-422b-6727a966-4c5d3689.ext e622b712160e8846bc580e1e8ef580a3 -

dir1/013c31f3-d8f9-c090-0aefbebb-6b192a87.ext e62ff0123a74adfc6903d59a449cbdb0 -

dir1/015530d4-d63e-1cb5-4f71f4eb-44ee72cd.ext e62ff0123a74adfc6903d59a449cbdb0 -

dir1/018e2f93-cf29-ad39-10cc8f34-2f52af09.ext e62ff0123a74adfc6903d59a449cbdb0 -

Mozg00FF ()
Ответ на: комментарий от Mozg00FF

Разобрался с командой sort, у меня названия всех папок имеют одну длину, так что ею можно отсортировать до вида, с которым уже что-то можно делать.

Всем спасибо.

Mozg00FF ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.