【问题标题】:xargs cp how to use asterix?xargs cp如何使用asterix?
【发布时间】:2020-05-18 13:58:46
【问题描述】:

我正在尝试通过保留文件夹结构的掩码复制文件(使用--parents),由于argument list too long 错误,我不能直接使用cp -r --parentsrsync

ls folder1/folder2/ | head | xargs -I {} cp -r --parents folder1/folder2/{}/neutral* neutral_data/

但似乎星号符号在此处无法按预期工作,而是出现一些错误,例如:

cp: cannot stat 'folder1/folder2/folder3/neutral*': No such file or directory

在这种情况下使用星号符号的正确方法是什么,或者解决这个问题的任何其他方法是什么?

更新:

基于这个答案https://unix.stackexchange.com/a/5247/221416我试过了

ls folder1/folder2/ | head | xargs -I {} sh -c cp -r --parents folder1/folder2/{}/neutral* neutral_data/

但它给出了错误:

cp: missing file operand

【问题讨论】:

  • 使用rsync 代替lsxargscp
  • 我不能直接使用cp -r --parentsrsync,因为argument list too long错误。
  • 使用ls 几乎总是一个糟糕的策略,因为文件/文件夹名称中有空格和其他特殊字符等。使用rsync 应该没有问题。你的标准到底是什么?应该包含或排除哪些文件/文件夹?您想在目标中复制多少源目录结构(整个源路径,或仅它的最后一部分)?您可以使用 --relative 和 rsync 来确定需要保留源路径的确切部分。

标签: linux bash rsync xargs cp


【解决方案1】:

这是一个解决方案:

ls folder1/folder2/ | xargs -I {} bash -c "cp -r --parents folder1/folder2/{}/neutral* neutral_data/"

【讨论】:

    猜你喜欢
    • 2021-11-01
    • 2016-12-13
    • 1970-01-01
    • 2017-11-15
    • 2010-10-25
    • 2015-07-11
    • 1970-01-01
    • 2016-12-27
    • 2019-04-12
    相关资源
    最近更新 更多