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