我想将ls -1
的结果加入到一行中,并用我想要的任何内容划分它。
我可以使用任何标准的Linux命令来实现这一目标吗?
#1楼
ls
连接到管道时产生一个列输出,因此-1
是多余的。
这是使用内置join
函数的另一个perl答案,它不会留下尾随分隔符:
ls | perl -F'\n' -0777 -anE 'say join ",", @F'
隐藏的-0777
使perl在运行程序之前读取所有输入。
sed替代品,不留下尾随分隔符
ls | sed '$!s/$/,/' | tr -d '\n'
#2楼
我觉得这个很棒
ls -1 | awk 'ORS=","'
ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。
#3楼
此命令适用于PERL粉丝:
ls -1 | perl -l40pe0
这里40是空间的八进制ascii代码。
-p将逐行处理并打印
-l将负责用我们提供的ascii字符替换尾部\\ n。
-e是告知PERL我们正在执行命令行。
0表示实际上没有执行命令。
perl -e0与perl -e'相同
#4楼
不要重新发明轮子。
ls -m
它正是如此。
#5楼
ls
有选项-m
用", "
逗号和空格分隔输出。
ls -m | tr -d ' ' | tr ',' ';'
将此结果传递给tr
以删除空格或逗号将允许您再次将结果传递给tr
以替换分隔符。
在我的例子我更换分隔符,
用分隔符;
替换;
使用您喜欢的任何一个字符分隔符 ,因为tr只会考虑您作为参数传入的字符串中的第一个字符。
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3165530