gpt4 book ai didi

bash - 在不接触磁盘的情况下从 tar.gz 中提取文件

转载 作者:行者123 更新时间:2023-11-29 09:01:41 24 4
gpt4 key购买 nike

当前进程:

  1. 我有一个 tar.gz文件。 (实际上,我有大约 2000 个,但那是另一回事了)。
  2. 我创建一个临时目录,解压tar.gz文件,显示 100,000 个小文件(每个大约 600 字节)。
  3. 对于每个文件,我将其放入一个处理程序中,将该循环通过管道传输到另一个分析程序中,然后保存结果。

我使用的机器上的临时空间几乎不能同时处理其中一个进程,更不用说它们默认发送的 16(超线程双四核)。我正在寻找一种无需保存到磁盘即可执行此过程的方法。我相信使用 tar -xf $file -O <targetname> 单独提取文件的性能损失会让人望而却步,但这可能是我所坚持的。

有什么办法吗?

编辑:因为两个人已经犯了这个错误,我要澄清一下:

  • 每个文件代表一个时间点。
  • 每个文件都单独处理。
  • 一旦处理(在本例中是傅立叶分析的变体),每个都会给出一行输出。
  • 这个输出可以结合起来做一些事情,比如跨时间的自相关。

EDIT2:实际代码:

for f in posns/*; do
~/data_analysis/intermediate_scattering_function < "$f"
done | ~/data_analysis/complex_autocorrelation.awk limit=1000 > inter_autocorr.txt

最佳答案

如果你不关心文件之间的边界,那么 tar --to-stdout -xf $file 会做你想做的;它将存档中每个文件的内容一个接一个地发送到标准输出。

这假定您使用的是 GNU tar,如果您使用的是 bash,则很有可能。

[更新]

考虑到您确实希望单独处理每个文件的限制,我同意 Charles Duffy 的观点,即 shell 脚本是错误的工具。

您可以尝试他的 Python 建议,或者您可以尝试 Archive::Tar Perl module .这些中的任何一个都允许您遍历内存中 tar 文件的内容。

关于bash - 在不接触磁盘的情况下从 tar.gz 中提取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11092672/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com