Во-первых, чтобы узнать, что для того, чтобы comm
правильно сообщать об общих строках среди нескольких файлов, вам нужно будет передавать входные файлы как отсортированные, если они еще не отсортированы ранее.
Во-вторых, вам нужно изменить команду mv
на mv final.txt a.txt
; чтобы сверить следующий файл с результатом предыдущей попытки; здесь я взял резервную копию из a.txt
и использовал вместо нее common.txt
для итерации в цикле for -.
так что у вас будет окончательный сценарий, как показано ниже:
cp a.txt common.txt
for ((i=1;i<=10000;i++));
do comm -12 <(sort common.txt) <(sort $i.txt) >temp.txt;
mv temp.txt common.txt;
done
наконец, cat common.txt
будут те строки, которые являются общими среди 10000 файлов.