【问题标题】:I'm using xargs, but the argument list is too long我正在使用 xargs,但参数列表太长
【发布时间】:2020-07-21 22:33:46
【问题描述】:

我正在使用 Linux。我有一个目录树,其中包含超过 100,000 个源自 MS Windows 系统的文件。有些文件的名称中有空格。我想将这些文件转换为 unix。我运行了这个命令

find . -type f | xargs -0 dos2unix

并收到此错误消息

xargs: argument line too long

我该如何解决这个问题?

【问题讨论】:

  • xargs -0 你为什么用-0
  • 因为某些文件的名称中有空格。如果我不使用-0,则该命令无法正常工作。
  • 在查找中不需要-print0 吗?
  • 在 Microsoft Windows 上,您可能需要使用“-s”,如:“xargs -0 -s 20000”(有关详细信息,请参阅手册页)...我多年前就知道了由于 msysgit 中的错误:github.com/msysgit/git/pull/354#issuecomment-106244339

标签: linux xargs


【解决方案1】:

如果您想将xargs-0 一起使用以防止文件名中出现空格/特殊字符问题,您还必须将-print0find 一起使用,这样它将用空字节分隔其输出:

find . -type f -print0 | xargs -0 dos2unix

【讨论】:

    【解决方案2】:

    这里不需要xargs,你可以做

    find . -type f -exec dos2unix '{}' +
    

    【讨论】:

    • 好的(稍作修改以使其适用于 csh/tcsh)。
    猜你喜欢
    • 2010-10-15
    • 2019-06-03
    • 2017-11-30
    • 2020-05-09
    • 2014-05-21
    • 2015-04-04
    • 2021-10-26
    • 2014-04-18
    • 2021-10-28
    相关资源
    最近更新 更多