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


当前回答

sed -e :a -e '/$/N; s/\n/\\n/; ta' [filename]

解释:

-e -表示要执行的命令 :a -为标签 /$/N -定义当前和(N)下一行的匹配范围 s / \ n / \ \ n /;-将所有EOL替换为\n 助教;-如果匹配成功,则标记a

摘自我的博客。

其他回答

Ls有选项-m,用“,”一个逗号和一个空格分隔输出。

ls -m | tr -d ' ' | tr ',' ';'

将此结果输送到tr以删除空格或逗号,这将允许您再次将结果输送到tr以替换分隔符。

在我的例子中,我用分隔符替换分隔符;

取代;使用您喜欢的任意一个字符分隔符,因为tr仅用于作为参数传入的字符串中的第一个字符。

类似于第一个选项,但省略了后面的分隔符

ls -1 | paste -sd "," -

这个命令是为PERL爱好者准备的:

ls -1 | perl -l40pe0

这里的40是空格的八进制ascii码。

-p将逐行处理并打印

-l将负责用我们提供的ASCII字符替换尾随的\n。

-e是通知PERL我们正在执行命令行。

0表示实际上没有命令要执行。

Perl -e0与Perl -e ' '相同

如果你的xargs版本支持-d标志,那么这应该可以工作

ls  | xargs -d, -L 1 echo

-d是分隔符标志

如果没有-d,那么可以尝试以下操作

ls | xargs -I {} echo {}, | xargs echo

第一个xargs允许您指定分隔符,在本例中为逗号。

编辑:如果您希望分隔符为逗号,则只需“ls -m”

啊,力量和简单!

ls -1 | tr '\n' ','

把逗号“,”改成任何你想要的。注意,这包括一个“尾随逗号”(用于以换行符结束的列表)。