如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?


当前回答

不要白费力气。

ls -m

它就是这么做的。

其他回答

不要白费力气。

ls -m

它就是这么做的。

如果你喜欢Python3,你可以这样做(但是请解释为什么你会这样做?):

ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"

我觉得这个很棒

ls -1 | awk 'ORS=","'

ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。

Ls在连接到管道时产生一列输出,因此-1是多余的。

下面是另一个使用内置join函数的perl答案,它不留下尾随分隔符:

ls | perl -F'\n' -0777 -anE 'say join ",", @F'

晦涩的-0777使perl在运行程序之前读取所有输入。

不留下尾随分隔符的Sed替代方法

ls | sed '$!s/$/,/' | tr -d '\n'

在majkinetor的回答之上,下面是删除尾随分隔符的方法(因为我还不能在他的回答下评论):

ls -1 | awk 'ORS=","' | head -c -1

只要删除分隔符所需要的尾随字节即可。

我喜欢这种方法,因为我可以使用多字符分隔符+ awk的其他好处:

ls -1 | awk 'ORS=", "' | head -c -2

EDIT

正如Peter所注意到的,head的原生MacOS版本不支持负字节计数。然而,这是很容易解决的。

首先,安装coreutils。GNU核心实用程序是GNU操作系统的基本文件、shell和文本操作实用程序。

brew install coreutils

MacOS提供的命令也以“g”开头安装。例如gls。

一旦你这样做了,你可以使用ghead,它有负字节计数,或者更好,使别名:

alias head="ghead"