【问题标题】:xargs fails when a filename contains white space当文件名包含空格时 xargs 失败
【发布时间】:2015-05-29 09:18:53
【问题描述】:

我正在使用 xargs 搜索文件中的内容,但 xargs 由于文件名中的空格而失败。这背后的原因是什么?无论如何,我可以通过在find 命令中使用-exec 来实现它。

【问题讨论】:

  • 您能否发布一个失败命令的示例?失败的可能不是 xargs 而是它正在调用的命令
  • xargs 扫描其标准输入以查找要处理的文件名。如果文件名包含空格,则它显示为两个标记,除非空格被转义或文件名用引号引起来,就像您将某些文件名直接输入任何 cli 实用程序一样。这不是 xargs 特定的问题,而是您的 shell 环境的行为方式。

标签: linux find whitespace filenames xargs


【解决方案1】:

在可能包含空格的文件上使用findxargs 时,将-print0find-0xargs 一起使用,这样xargs 会收到由nul 分隔的文件名而是使用正确的参数调用该实用程序。

例如,在当前目录(及以下)的所有文件中查找“字符串”:

$ find . -type f -print0 | xargs -0 grep "string"

请参阅findxargs 的手册。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-30
    • 2013-05-21
    • 2021-11-16
    • 1970-01-01
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多