Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字相关的知识,希望对你有一定的参考价值。

Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字,则合并,不停地循环,直到剩下的文件任意两个都没有重复的数字,比如 文件 file1 里的文字是 1 3 4 9; 文件 file2 里的文字是 12 34 4 91; file3 里的文字是 11 73 24 9; file4 里的文字是 632 99;则 file1和file2通过4合并到一起然后再通过9与file3合并到一起,file4 因为与其他文件没有交叉的数字所以不合并,最终是2个文件:
一个文件为file1,file2,file3合并的一起形成的大文件(去重),当然这个大文件要起个名字,名字没有具体要求
另一个就是file4
怎么用linux实现一下啊,请教高手们了

参考技术A while [ 1 -eq 1 ] ##无限循环直到所有文件相同的文件合并成功
do
i=0 ##使用数组应该好一些
j=0
for a in $(ls /xxx/xxx/*)
do
b[$i]=$a ##获取的所有文件赋予给数组
let i=i+1
done
while [ j -ln $#b[@] ] ##文件有多个次,循环多少次,拿文件比较
do
for c in $(awk 'for(i=1;i<=4;i++)printf $i' $b[$j]) ##文件里面有多少数据,循环多少次
do
let d=j+1
e=`cat $b[$d]|grep $c` ##拿第一个文件与后面一个文件比是否存有相同的数
if [ $e -eq 1 ]
then
sort -u $b[$j] $b[$d] > $j.txt ##如果有重复的就合并到文件,没有继续与第3个文件比较
break; ##然后终止循环,为什么要终止循环?因为合并的文件还有可能与后面的文件重 ## 复数字,故退出循环,进入大的循环再获取新的文件比较
else if [ j -eq $($#b[@]-1) ] ##如果比到倒数第二个文件和最后一个文件没有没有相似点则退出程序, ##比较完毕
exit;
fi
done
then
exit
fi
done
done本回答被提问者采纳

以上是关于Linux下怎么合并一个文件夹下的所有文件,规则就是 只要任意两个文件含有一个相同的数字的主要内容,如果未能解决你的问题,请参考以下文章

linux怎么查看一个目录下的文件数量

linux怎么删除当前目录下的所有文件

怎么在同一个文件夹下的多个EXCEL文件合并到一个EXCEL里?

Linux怎么用命令合并多个文件为一个

DOS按规则批量重命名所有(子)目录下文件

在linux系统下显示/etc下的所有开始字母为a的文件怎么办