我有以下文件:

#ls
test  test2  test3  test4

现在根据xargs -0,输入是基于null而不是空格进行裁剪的,因此,由于我的输入中没有null,因此应在一个echo命令中打印4个文件。结果是一个echo命令,但是每个文件之间都有一个新行:
#ls | xargs -0
test
test2
test3
test4

确保只有一个命令:
 ls | xargs -0 -p
echo test
test2
test3
test4
 ?...n

为什么每个文件之间都有换行符?

最佳答案

ls打印到TTY时,它会格式化列中的文件名,但是当它写入文件,管道或其他非TTY时,其行为类似于ls -1并每行打印一个文件名。您可以通过运行ls | cat代替ls进行检查。

对于ls | xargs -0,换行符来自ls,而不是xargsxargs实际上正在按您的预期读取单个字符串,但是该字符串具有换行符。

另请参阅:

  • BashFAQ - Why you shouldn't parse the output of ls(1)
  • 关于linux - xargs -0产生新行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53745351/

    10-14 13:22
    查看更多