Supondo que seus nomes de arquivos não tenham espaços ou caracteres especiais, isso deve funcionar para você. Você pode ter que ajustar o primeiro comando para obter a ordem de classificação desejada para quais arquivos serão trabalhados primeiro.
#!/bin/bash
temp=$(mktemp)
for file_to_dedupe in $(echo *.json|sort)
do
for file_to_strip in *.json
do
[ "$file_to_dedupe" == "$file_to_strip" ] && continue
grep -w -Ff ${file_to_dedupe} -v ${file_to_strip} > ${temp}
mv ${temp} ${file_to_strip}
done
done
Explicação
-
temp=$(mktemp)
cria um arquivo tmp com o qual trabalhar com -
for file_to_dedupe in $(echo *.json|sort)
inicia o loop para que os arquivos sejam duplicados. -
for file_to_strip in *.json
inicia o loop pelos arquivos para remover as duplicatas de. -
[ "$file_to_dedupe" == "$file_to_strip" ] && continue
pula nosso arquivo atual. -
grep -w -Ff ${file_to_dedupe} -v ${file_to_strip} > ${temp}
remove os dupes exatos usando cada linha como um padrão defile_to_dedupe
-
mv ${temp} ${file_to_strip}
colocou o novo arquivo no lugar.