【问题标题】:Iterative zipping process through 10 files in bash通过 bash 中的 10 个文件迭代压缩过程
【发布时间】:2013-02-18 00:06:30
【问题描述】:

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

所以我的想法是我有 10 个文件,它们将被命名为 file_1.txt 到 file_10.txt,我想将 file_1 视为一种“训练”文件。因此将file_2附加到file_1,然后使用gzip压缩并保存在其他地方,我想它会看起来像这样......

cat file_1.txt file_2.txt | gzip -c > newfile.gz

但下一步是对 file_3 到 file_1 和 zip 作为新文件执行相同操作,然后将 file_4 到 file_1 等等(你明白了)。

一旦使用 file_1 从 _2 运行到 _10,我想对 file_2 执行相同的操作,并分别附加 1、3、4、5、6、7、8 和 10 并压缩等。

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

提前感谢任何提示或帮助。

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

【问题讨论】:

  • 你知道如何在 Bash 中编写循环吗?

标签: macos bash loops iteration batch-processing


【解决方案1】:

使用循环:

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 留给读者作为练习。

【讨论】:

  • 谢谢!感谢您的帮助。
  • 仅供参考,如果输入文件的数量不固定(即 $n 而不是 10 个),您可以使用 $(seq 1 $n) 代替 {1..10}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-22
  • 2019-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多