如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
我觉得这个很棒
ls -1 | awk 'ORS=","'
ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。
其他回答
如果你的xargs版本支持-d标志,那么这应该可以工作
ls | xargs -d, -L 1 echo
-d是分隔符标志
如果没有-d,那么可以尝试以下操作
ls | xargs -I {} echo {}, | xargs echo
第一个xargs允许您指定分隔符,在本例中为逗号。
就bash
mystring=$(printf "%s|" *)
echo ${mystring%|}
快速Perl版本与尾随斜杠处理:
ls -1 | perl -E 'say join ", ", map {chomp; $_} <>'
解释:
perl -E:执行perl的特性支持(例如,…) 说:打印与载体返回 join ", ", ARRAY_HERE:用","加入数组 地图{切齿;$_} ROWS:从每一行中删除载体返回并返回结果 <>: stdin,每一行都是一个ROW,与映射耦合将创建每个ROW的数组
一般不建议解析ls,所以另一种更好的方法是使用find,例如:
find . -type f -print0 | tr '\0' ','
或者使用find和粘贴:
find . -type f | paste -d, -s
对于一般的多行连接(与文件系统无关),请检查:Unix命令行上简明而可移植的“join”。
你可以使用chomp将多行合并成一行:
Perl -e 'while (<>) {if (/\$/) {chomp;}' bad0 >test
在if语句中加入换行条件。它可以是特殊字符或任何分隔符。