【问题标题】:Unix tar returns The parameter list is too long [duplicate]Unix tar返回参数列表太长[重复]
【发布时间】:2020-02-13 22:33:28
【问题描述】:

当我尝试使用 fowing 命令压缩文件夹中的所有文件时:

tar cvf mailpdfs.tar *.pdf

shell 抱怨:

ksh: /usr/bin/tar: 0403-027 参数列表过长。

如何处理?我的文件夹有25000个pdf文件,每个文件大小2MB,如何快速复制?

【问题讨论】:

标签: linux shell unix tar


【解决方案1】:

您可以将所有 pdf 文件复制/移动到新文件夹,然后 tar 新文件夹。

mv *.pdf newfolder

tar cvf mailpdfs.tar newfolder

Referenced from unix.com

【讨论】:

    【解决方案2】:

    tar 选项-T 就是你需要的

       -T, --files-from=FILE
              get names to extract or create from FILE 
    

    你打破了 ksh 中文件 globbing 的限制,所以你可以生成这样的文件列表

    ls | grep '\.pdf$' >files.txt
    

    然后将该文件与 tar 一起使用

    tar cvf mailpdfs.tar -T files.txt
    

    最后,您可以通过让 tar 从标准输入读取文件名(通过为 -T 选项指定特殊文件名 -)来取消创建临时文件来保存文件名。

    所以我们最终得到了这个

    ls | grep '\.pdf$' | tar cvf mailpdfs.tar -T -
    

    【讨论】:

    • 这样,文件名中的特殊字符不再是问题:find . -maxdepth 1 -name "*.pdf" -print0 | tar --null -cf mailpdfs.tar -T -
    猜你喜欢
    • 2011-08-19
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2012-07-14
    • 2019-06-03
    • 2017-11-30
    • 2020-05-09
    • 2014-05-21
    相关资源
    最近更新 更多