Macos bash中10个文件的迭代压缩过程

Macos bash中10个文件的迭代压缩过程,macos,bash,loops,iteration,batch-processing,Macos,Bash,Loops,Iteration,Batch Processing,您好,我想知道是否有人可以帮助我编写代码,理论上我知道如何使用基本命令手动执行,但是为了节省时间并提高效率,我希望使用.sh脚本手动执行,因为我可能会使用大量数据 所以我的想法是我有10个文件,从文件1.txt到文件10.txt,我想把文件1当作一种“训练”文件。因此,将文件2附加到文件1,然后使用gzip压缩并保存到其他地方,我想它会像这样 cat file_1.txt file_2.txt | gzip -c > newfile.gz 但下一步是对文件3到文件1执行相同的操作,并将其

您好,我想知道是否有人可以帮助我编写代码,理论上我知道如何使用基本命令手动执行,但是为了节省时间并提高效率,我希望使用.sh脚本手动执行,因为我可能会使用大量数据

所以我的想法是我有10个文件,从文件1.txt到文件10.txt,我想把文件1当作一种“训练”文件。因此,将文件2附加到文件1,然后使用gzip压缩并保存到其他地方,我想它会像这样

cat file_1.txt file_2.txt | gzip -c > newfile.gz
但下一步是对文件3到文件1执行相同的操作,并将其压缩为一个新文件,然后将文件4到文件1等等(你明白了)

一旦用文件1运行完2到10,我想对文件2执行同样的操作,分别附加1,3,4,5,6,7,8和10,以及zip等

因此,在最后,我应该有90个单独的zip文件。(包括单独压缩的每个文件,即file_1.gz、file_2.gz等,作为比较附加文件的参考)

提前感谢您提供的任何提示或帮助

另外,提供的任何代码是否真的有效并不重要,例如,一个接一个地拆分成10个不同的循环,如果清楚的话就可以了。我只是在分析结果,而不是使用代码。谢谢

使用循环:

for i in {1..10} ; do
    for j in {1..10} ; do
        if (( i != j )) ; then
            cat file_$i.txt file_$j.txt | gzip -c > newfile-$i-$j.gz
        fi
    done
done
这将创建90个gzip文件,不包括每个文件本身的gzip。创建额外的10个gzip留给读者作为练习。

使用循环:

for i in {1..10} ; do
    for j in {1..10} ; do
        if (( i != j )) ; then
            cat file_$i.txt file_$j.txt | gzip -c > newfile-$i-$j.gz
        fi
    done
done

这将创建90个gzip文件,不包括每个文件本身的gzip。创建额外的10个gzip留给读者作为练习。

您知道如何在Bash中编写循环吗?您知道如何在Bash中编写循环吗?谢谢!感谢帮助。仅供参考,如果输入文件的数量不是固定的(即,
$n
而不是10),您可以使用
$(seq 1$n)
代替
{1..10}
。谢谢!感谢help.FYI,如果输入文件的数量不是固定的(即,
$n
而不是10),您可以使用
$(seq 1$n)
代替
{1..10}