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


当前回答

就bash

mystring=$(printf "%s|" *)
echo ${mystring%|}

其他回答

为了避免tr的换行符混淆,我们可以在ls中添加-b标志:

ls -1b | tr '\n' ';'

设置IFS和使用“$*”的组合可以实现您想要的功能。我使用了一个subshell,所以我不会干扰这个shell的$IFS

(set -- *; IFS=,; echo "$*")

为了捕获输出,

output=$(set -- *; IFS=,; echo "$*")

就bash

mystring=$(printf "%s|" *)
echo ${mystring%|}
sed -e :a -e '/$/N; s/\n/\\n/; ta' [filename]

解释:

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

摘自我的博客。

看起来答案已经存在了。

如果你愿意 a, b, c格式,使用ls -m (Tulains Córdova的答案)

或者如果你想要bc格式,使用ls | xargs (Chris J回答的简化版本)

或者如果你想要任何其他的分隔符,如|,使用ls |粘贴-sd'|' (Artem ' s answer的应用)