LINUX.ORG.RU

одинаковые файлы


0

0

Знаете ли вы прогу для поиска по фс одинаковых файлов? платформа - любая.

ЗЫ одинаковых - с одинаковым содержимым/сигнатурой.


Ответ на: комментарий от anonymous

Для полного счастья ещё надо подключить устройство /dev/hands :)

Laz ★★★★★
()

$ apt-cache show fdupes

Description: Identifies duplicate files within given directories
 FDupes uses md5sums and then a byte by byte comparison to 
 find duplicate files within a set of directories.
 It has several useful options including recursion.

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

Сравнивать все подряд и во всех комбинациях?
Сначала надо сравнить размер, потом отобрать по md5sum и только потом по cmp.
короче: пользуйтесь fdupes и не изобретайте велосипед.

sdio ★★★★★
()

Я бы предполагал это делать примерно так:

for i in `find *`; do [ -f "$i" ] && echo "`md5sum \"$i\"`"; done | sort | awk -- '{ if (LAST==$1) print; else LAST=$1 }'

Выводит все повторяющиеся файлы (за исключением первого экземпляра).

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

Если ты такой умный, то почему сразу свой вариант не привёл?
Тут главное идея. А привести к красивому виду это всегда успеется.. Я это набрасал буквально за минуту -- а потом спать лёг..
(Хотя про "uniq -d" не знал -- спасибо)
Ну и всё же твой вариант тоже не завершённый:
awk '{print $2}'

Будет выводить только часть пути к файлу до первого пробела в нём (а я думаю это не такая уж и редкость).

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

Дык я сразу сказал, пользуйтесь fdupes и не изобретайте велосипед.

Ну и вместо awk '{print $2}' -- cut -d' ' -f2-

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

> Дык я сразу сказал, пользуйтесь fdupes и не изобретайте велосипед.

Ну, конечно скрипт в 5 команд это очень большой велосипед...

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

>Ну, конечно скрипт в 5 команд это очень большой велосипед..
Нет, это еще не велосипед, но он(скрипт) им станет, когда ты начнешь приводить вывод этих 5 команд к читабельному (удобному для разбора человеком) виду. И это будет уже не 5 команд.

Сравни
---- fdupes: ----------
160304 bytes each:
/home/sdio/tmp1/file1
/home/sdio/tmp2/file2

29792 bytes each:
/home/sdio/tmp1/file3
/home/sdio/tmp2/file4
/home/sdio/tmp2/file5

16896 bytes each:
/home/sdio/tmp1/file6
/home/sdio/tmp2/file7
_______________________________________________________

----------Скрипт в 5 строк-----------
4d6231fa5cb794ca4f35c5491ecc1d4f  /home/sdio/tmp1/file1
4d6231fa5cb794ca4f35c5491ecc1d4f  /home/sdio/tmp2/file2
545b2694c600155462304d2bf3ac5d18  /home/sdio/tmp1/file3
545b2694c600155462304d2bf3ac5d18  /home/sdio/tmp2/file4
545b2694c600155462304d2bf3ac5d18  /home/sdio/tmp2/file5
bb578961e7539192d62aefcf028a93a5  /home/sdio/tmp1/file6
bb578961e7539192d62aefcf028a93a5  /home/sdio/tmp3/file7
_________________________________________________________

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

> И это будет уже не 5 команд

Да, будет семь команд :-)
Всё зависит от требуемой задачи. Далеко не всегда нужен "читабельный" формат.
Если с этими файлами надо ещё что-то сделать в другом скрипте (хотя бы удалить копии), то приведённый вывод fdupes только сложнее ещё разбирать.

А так единственное чем скрипт в 5 строк хуже, так это тем, что из-за полного sort может быть он будет несколько дольше отрабатывать.

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

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

Ну конечно, все именно так.

P.S. зная как найти повторяющиеся записи при помощи awk, "я бы даже не стал искать утилиту реализующие" эту функцию (uniq -D)

:-)))

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

> P.S. зная как найти повторяющиеся записи при помощи awk, "я бы даже не стал искать утилиту реализующие" эту функцию (uniq -D)

Ну, во-первых в данном случае реализация awk будет несколько неудобна (я же привёл только 'uniq -d', но не 'uniq -D'),
во-вторых утилита уже известна + уже есть в дистрибутиве
и в-третьих она имеет именно тот формат вывода какой нужен ( собственно говоря другого и быть не может :-) )

Так вот, когда есть все эти три компонента я разумеется предпочту утилиту вместо не слишком вменяемой программы на awk.

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

>во-вторых утилита уже известна + уже есть в дистрибутиве 

$ apt-cache search find duplicate file
fdupes - Identifies duplicate files within given directories
findimagedupes - Finds visually similar or duplicate images
[SKIP]

Утилита известна и в дистрибутиве. 
В остальном я согласен, то что не находится по apt-cache search, мне проще написть самому.

З.Ы. Написание скрипта "за минуту" в плохом стиле -- не оправдание.
     Просто подучи возможности стандартных утилит и старайся 
     не привязываться к конкретному шелу (bash). 
     Это искреннее пожелание, а не наезд.

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

> Утилита известна и в дистрибутиве.

У кого как... На 3-х дисках ASPLinux нету.

> не привязываться к конкретному шелу (bash).

Да оно в любом shell'е скорей всего будет работать :-)
(Хотя может в csh нет..)

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

> Просто подучи возможности стандартных утилит

Возможностей всех 5543 утилит (именно столько у меня возникает выбора по tab-tab у root'а) я думаю никто не знает :-)

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