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

我想将ls -1的结果加入到一行中,并用我想要的任何内容划分它。 函数

我能够使用任何标准的Linux命令来实现这一目标吗? spa


#1楼

ls链接到管道时产生一个列输出,所以-1是多余的。 命令行

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

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

隐藏的-0777使perl在运行程序以前读取全部输入。 ci

sed替代品,不留下尾随分隔符 字符串

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

#2楼

我以为这个很棒 awk

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

ORS是“输出记录分隔符”,因此如今你的行将用逗号链接。 sed


#3楼

此命令适用于PERL粉丝: 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只会考虑您做为参数传入的字符串中的第一个字符。

相关文章
相关标签/搜索