如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
编辑:如果您希望分隔符为逗号,则只需“ls -m”
啊,力量和简单!
ls -1 | tr '\n' ','
把逗号“,”改成任何你想要的。注意,这包括一个“尾随逗号”(用于以换行符结束的列表)。
其他回答
设置IFS和使用“$*”的组合可以实现您想要的功能。我使用了一个subshell,所以我不会干扰这个shell的$IFS
(set -- *; IFS=,; echo "$*")
为了捕获输出,
output=$(set -- *; IFS=,; echo "$*")
你可以使用chomp将多行合并成一行:
Perl -e 'while (<>) {if (/\$/) {chomp;}' bad0 >test
在if语句中加入换行条件。它可以是特殊字符或任何分隔符。
就bash
mystring=$(printf "%s|" *)
echo ${mystring%|}
用换行符替换最后一个逗号:
ls -1 | tr '\n' ',' | sed 's/,$/\n/'
Ls -m包含屏幕宽度字符处的换行符(例如第80行)。
主要是Bash(只有ls是外部的):
saveIFS=$IFS; IFS=$'\n'
files=($(ls -1))
IFS=,
list=${files[*]}
IFS=$saveIFS
在Bash 4中使用readarray(又名mapfile):
readarray -t files < <(ls -1)
saveIFS=$IFS
IFS=,
list=${files[*]}
IFS=$saveIFS
感谢gniourf_gniourf的建议。
看起来答案已经存在了。
如果你愿意 a, b, c格式,使用ls -m (Tulains Córdova的答案)
或者如果你想要bc格式,使用ls | xargs (Chris J回答的简化版本)
或者如果你想要任何其他的分隔符,如|,使用ls |粘贴-sd'|' (Artem ' s answer的应用)
推荐文章
- Node.js上的html解析器
- Java中的split()方法对点(.)不起作用。
- 如何重定向标准derr和标准输出到不同的文件在同一行脚本?
- Windows和Linux上的c++编译:ifdef开关
- 我如何检查如果一个变量是JavaScript字符串?
- 如何显示有两个小数点后的浮点数?
- 如何循环通过一个目录递归删除具有某些扩展名的文件
- 在Bash中获取日期(比当前时间早一天)
- Linux: kill后台任务
- 在Lua中拆分字符串?
- 如何修改Linux系统中打开文件的数量限制?
- 在OSX中永久设置PATH环境变量
- 如何在Python中按字母顺序排序字符串中的字母
- 删除Bash脚本中的重复条目
- python: SyntaxError: EOL扫描字符串文字