如何将多行文件名连接到一个自定义分隔符?

戏子无情 提交于 2020-02-27 22:52:06

我想将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只会考虑您作为参数传入的字符串中的第一个字符。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!