如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
这个命令是为PERL爱好者准备的:
ls -1 | perl -l40pe0
这里的40是空格的八进制ascii码。
-p将逐行处理并打印
-l将负责用我们提供的ASCII字符替换尾随的\n。
-e是通知PERL我们正在执行命令行。
0表示实际上没有命令要执行。
Perl -e0与Perl -e ' '相同
其他回答
上面的Python回答很有趣,但自己的语言甚至可以使输出更好:
python -c "import sys;打印(sys.stdin.read () .splitlines())”
设置IFS和使用“$*”的组合可以实现您想要的功能。我使用了一个subshell,所以我不会干扰这个shell的$IFS
(set -- *; IFS=,; echo "$*")
为了捕获输出,
output=$(set -- *; IFS=,; echo "$*")
如果你喜欢Python3,你可以这样做(但是请解释为什么你会这样做?):
ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"
你可以使用:
ls -1 | perl -pe 's/\n$/some_delimiter/'
Ls在连接到管道时产生一列输出,因此-1是多余的。
下面是另一个使用内置join函数的perl答案,它不留下尾随分隔符:
ls | perl -F'\n' -0777 -anE 'say join ",", @F'
晦涩的-0777使perl在运行程序之前读取所有输入。
不留下尾随分隔符的Sed替代方法
ls | sed '$!s/$/,/' | tr -d '\n'