【问题标题】:Tar list of files resulting from command [closed]命令产生的文件的tar列表[关闭]
【发布时间】:2021-10-19 11:17:25
【问题描述】:

我有一个包含 200k pdf 文件的文件夹,我想将它们 tar。以下哪种解决方案会更好?我怀疑由于命令行长度限制,命令替换可能会遇到大量文件的问题。

Process Substitution

tar -cf out.tar -T <(compgen -G '*.pdf')

Command Substitution(可能会打破命令长度限制?)

tar -cf out.tar `compgen -G '*.pdf'`

【问题讨论】:

  • 为什么不使用xargstar的追加模式呢?类似compgen -G '*.pdf' | xargs | tar --append -f out.tar
  • 第一个如果命令行长度是一个潜在的问题,当然。
  • @RenaudPacalet 那将是另一种选择,但流程替换对我来说似乎更简单
  • @Roland 当然。但是xargs 是专门为解决命令行长度限制而设计的。它还有其他一些不错的属性,例如 NUL 输入分隔符,如果您的某些文件的名称中有空格,您可能希望使用这些属性。

标签: linux bash tar command-substitution process-substitution


【解决方案1】:

我测试过。

进程替换工作,命令替换因参数列表长度而中断。

我还用tar --appendfindxargs 进行了测试。结果表明 append 速度要慢得多。

【讨论】:

  • 这样效率低,不是吗?
  • 是的@Roland,我更新了答案。
  • 如果您使用的 shell 不支持进程替换,则会失败,并且参数列表长度是依赖于操作系统的约束,某些操作系统允许任意大的参数列表。
猜你喜欢
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 2018-10-31
  • 2019-11-23
  • 2022-12-01
  • 2016-06-03
相关资源
最近更新 更多