Если в именах файлов нет пробелов или специальных символов, это должно сработать для вас. Возможно, вам придется настроить первую команду, чтобы получить желаемый порядок сортировки, для которого файлы обрабатываются в первую очередь.
#!/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
Объяснение
temp = $ (mktemp)
создать tmp-файл, который будет работать с для file_to_dedupe в $ (echo * .json | sort)
начать цикл для файлов для дедупликации . для file_to_strip в * .json
начать цикл по файлам, чтобы удалить дубликаты. ["$ file_to_dedupe" == "$ file_to_strip"] && continue
пропустить текущий файл. grep -w -Ff $ {file_to_dedupe} -v $ {file_to_strip}> $ {temp}
удалить точные дубли, используя каждую строку в качестве шаблона из file_to_dedupe
mv $ {temp} $ {file_to_strip}
поместил новый файл на место.