Sibgha:
Eu tenho dois diretórios no meu sistema linux, /dir
e/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 /dir
e /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 JQ 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.