【问题标题】:Unix cp argument list too longUnix cp 参数列表太长
【发布时间】:2011-08-19 00:55:37
【问题描述】:

我正在使用 AIX。

当我尝试使用以下命令将文件夹中的所有文件复制到另一个文件夹时:

cp ./00012524/*.PDF ./dummy01

shell 抱怨:

ksh: /usr/bin/cp: 0403-027 The parameter list is too long.

如何处理?我的文件夹包含 8xxxx 个文件,我怎样才能快速复制它们?每个文件的大小为 4x kb 到 1xx kb。

【问题讨论】:

标签: unix ksh aix


【解决方案1】:

你可以这样做并抓取目录的每一行


# you can use the -rv to check the status of the command verbose

for i in /from_dir/*; do cp -rv "$i" /to_dir/; done

【讨论】:

    【解决方案2】:

    在 *nix 中使用find 命令:

    find ./00012524 -type f -name "*.PDF" -exec cp {} ./dummy01/ \; -print
    

    【讨论】:

    • 在一般情况下,我还会添加一个“-type d”。匹配 */PDF 的目录应该很少见,但对于更一般的副本,它将避免由于首先复制父目录(或在没有 -r 标志的情况下失败)然后是子目录而导致的多个副本。
    【解决方案3】:

    cp 命令对可以同时复制的文件有限制。

    您可以根据文件模式多次使用 cp 命令复制它们,例如:

    cp ./00012524/A*.PDF ./dummy01
    cp ./00012524/B*.PDF ./dummy01
    cp ./00012524/C*.PDF ./dummy01
    ...
    cp ./00012524/*.PDF ./dummy01
    

    你也可以通过find命令复制槽:

    find ./00012524 -name "*.PDF" -exec cp {} ./dummy01/ \;
    

    【讨论】:

    • 我通过 find 命令得到了omitting directory './00012524'
    【解决方案4】:

    将大量文件从一个目录复制到另一个目录的最佳命令。

    find /path/to/source/ -name "*" -exec cp -ruf "{}" /path/to/destination/ \;

    这对我帮助很大。

    【讨论】:

      【解决方案5】:

      cp-t 标志在这里很有用:

      find ./00012524 -name \*.PDF -print | xargs cp -t ./dummy01

      【讨论】:

        【解决方案6】:
        $ ( cd 00012524; ls | grep '\.PDF$' | xargs -I{} cp {} ../dummy01/ )
        

        【讨论】:

          【解决方案7】:

          你应该可以使用 for 循环,例如

          for f in $(ls ./00012524/*.pdf)
          do
              cp $f ./dummy01
          done
          

          我无法对此进行测试,但理论上应该可行。

          【讨论】:

          • ls 命令可能(读作“几乎可以肯定”)得到同样的错误。参数太长是类 Unix 系统上 C 库的标准错误(man sysconf 了解更多信息)。最好的方法是找到... | cpio -pvumd ... 或使用 xargs 或 tar c...| tar x 等。其中一个将需要一个 shell 扩展 glob,这是他的问题的原因。这确实比 SO 更适合 SeverFault 或 SuperUser。
          • 改进版:for f in ./00012524/*.pdf; dofind+xargs+cp -t 更快。
          猜你喜欢
          • 2012-07-02
          • 2020-02-13
          • 2019-06-03
          • 2017-11-30
          • 2020-05-09
          • 2014-05-21
          • 2015-04-04
          • 2021-10-26
          • 2014-04-18
          相关资源
          最近更新 更多