如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
一般不建议解析ls,所以另一种更好的方法是使用find,例如:
find . -type f -print0 | tr '\0' ','
或者使用find和粘贴:
find . -type f | paste -d, -s
对于一般的多行连接(与文件系统无关),请检查:Unix命令行上简明而可移植的“join”。
其他回答
你可以使用:
ls -1 | perl -pe 's/\n$/some_delimiter/'
就bash
mystring=$(printf "%s|" *)
echo ${mystring%|}
编辑:如果您希望分隔符为逗号,则只需“ls -m”
啊,力量和简单!
ls -1 | tr '\n' ','
把逗号“,”改成任何你想要的。注意,这包括一个“尾随逗号”(用于以换行符结束的列表)。
我觉得这个很棒
ls -1 | awk 'ORS=","'
ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。
Ls在连接到管道时产生一列输出,因此-1是多余的。
下面是另一个使用内置join函数的perl答案,它不留下尾随分隔符:
ls | perl -F'\n' -0777 -anE 'say join ",", @F'
晦涩的-0777使perl在运行程序之前读取所有输入。
不留下尾随分隔符的Sed替代方法
ls | sed '$!s/$/,/' | tr -d '\n'