Я могу получить противоположность 'разности-q' — соответствие идентичным файлам, не печатая их содержание

В то время как bash не имеет этого точного поведения, zsh может сделать это с

setopt inc_append_history share_history

Посмотрите, Как Вы совместно используете историю между терминалами в zsh?

13
17.08.2013, 14:46
4 ответа

Если Вы просто хотите проверить, идентичны ли два файла или нет, использовать cmp. Для получения вывода только для идентичных файлов Вы могли использовать

for f in ./*; do for i in ./*; do cmp -s "$f" "$i" && echo "Files $f and $i are identical"; done; done

diff попытки произвести короткий, человекочитаемый список различий, и это может занять довольно много времени, поэтому избежать издержек, если Вам не нужны они.

6
27.01.2020, 19:52

Если необходимо найти идентичные файлы в списке, первый вид их размером, например, с

ls -S

затем для каждой группы идентичных размерных файлов, выполненных md5sum на них для наблюдения легко, которые идентичны который.

Для больших файлов, могло быть более быстрым к первой контрольной сумме только короткая часть целого файла:

dd if=file bs=512 count=1 | md5sum

и затем выполните полную контрольную сумму только на подозрительных файлах.

2
27.01.2020, 19:52

Это должно помочь:

diff -rs dir1 dir2 | egrep '^Files .+ and .+ are identical$'

где dir1 и dir2 - два ваших каталога.

Если вы хотите распечатать только совпадающие каталоги из dir1 :

diff -rs dir1 dir2 | egrep '^Files .+ and .+ are identical$' | awk -F '(Files | and | are identical)' '{print $2}'

И аналогично, если вы хотите распечатать только совпадающие каталоги из dir2 :

diff -rs dir1 dir2 | egrep '^Files .+ and .+ are identical$' | awk -F '(Files | and | are identical)' '{print $3}'
12
27.01.2020, 19:52

Самый быстрый инструмент, написанный для этой цели - fdupes (он доступен в репозиториях пакетов Fedora и Ubuntu и ...)

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

fdupes -r dir1 dir2
4
27.01.2020, 19:52

Теги

Похожие вопросы