Excluir arquivos duplicados JSON com base em um dos atributos

Sibgha:

Eu tenho dois diretórios no meu sistema linux, /dire/dir2

Ambos têm mais de 4000 arquivos JSON. O conteúdo JSON de cada arquivo é como

{
   "someattribute":"someValue",
   "url":[
      "https://www.someUrl.com/xyz"
   ],
   "someattribute":"someValue"
}

Note-se que URL é uma matriz, mas sempre contém um elemento (URL).

O url torna o arquivo único. Se houver um arquivo com o mesmo URL no /dire /dir2, em seguida, que é uma duplicata e precisa ser eliminado.

Eu quero automatizar esta operação ou usando um comando de preferência. Qualquer opinião como eu deveria ir sobre ele?

oguz Ismail:

Use para obter uma lista de duplicatas:

jq -nr 'foreach inputs.url[0] as $u (
  {}; .[$u] += 1; if .[$u] > 1
  then input_filename
  else empty end
)' dir/*.json dir2/*.json

E excluí-los, tubo acima de saída do comando para xargs:

xargs -d $'\n' rm --

ou, para compatibilidade com xargs não-GNU que tem -0, mas não -d:

tr '\n' '\0' | xargs -0 rm --

Note que os nomes de arquivos não devem conter avanços de linha.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=199481&siteId=1
Recomendado
Clasificación