O que significa '-dD' para 'uniq'?

1

De link

find . ! -empty -type f -exec md5sum {} + | sort | uniq -w32 -dD

pode encontrar arquivos duplicados no diretório atual.

O que -dD significa para uniq ? Eu vi os significados de -d e -D na manpage, mas não tenho certeza do que eles significam quando são usados juntos. Obrigado.

    
por Tim 23.07.2018 / 07:01

2 respostas

8

TLDR Linha de fundo, eles não fazem nada quando usados juntos; -dD é idêntico a -D .

Pesquisa

Se você observar a lógica de caso / troca do comando uniq.c , poderá ver isso em primeira mão:

case 'd':
  output_unique = false;
  output_option_used = true;
  break;

case 'D':
  output_unique = false;
  output_later_repeated = true;
  if (optarg == NULL)
    delimit_groups = DM_NONE;
  else
    delimit_groups = XARGMATCH ("--all-repeated", optarg,
                                delimit_method_string,
                                delimit_method_map);
  output_option_used = true;
  break;

A maneira como esse código é estruturado, se -dD for definido, ouput_unique será definido como falso; mas mais importante, output_later_repeated está definido como verdadeiro.

Quando essa condição for definida, output_later_repeated , não há nenhuma maneira possível de -dD ter nada além de uma saída idêntica a -D .

Por acaso, a página man computerhope do homem tem uma tabela melhor que explica as opções -d e -D .

Referências

por 23.07.2018 / 07:48
4

O uniq -dD não faz sentido - é equivalente a uniq -D . Tanto -dD quanto -D produzirão sempre o mesmo resultado, pois o conjunto de saída de -d é um subconjunto de -D .

    
por 23.07.2018 / 07:57