如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
用换行符替换最后一个逗号:
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的建议。
其他回答
设置IFS和使用“$*”的组合可以实现您想要的功能。我使用了一个subshell,所以我不会干扰这个shell的$IFS
(set -- *; IFS=,; echo "$*")
为了捕获输出,
output=$(set -- *; IFS=,; echo "$*")
不要白费力气。
ls -m
它就是这么做的。
用换行符替换最后一个逗号:
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的建议。
我觉得这个很棒
ls -1 | awk 'ORS=","'
ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。
你可以使用chomp将多行合并成一行:
Perl -e 'while (<>) {if (/\$/) {chomp;}' bad0 >test
在if语句中加入换行条件。它可以是特殊字符或任何分隔符。
推荐文章
- 为什么用反斜杠开始shell命令?
- 如何找到Java堆大小和内存使用(Linux)?
- 在Bash Shell脚本中生成1到10之间的随机数
- 遍历带空格的文件列表
- 如何在bash中使用mod操作符?
- 在Bash中检查传递的参数是否为文件或目录
- c#:如何获得一个字符串的第一个字符?
- String类中的什么方法只返回前N个字符?
- Bash:无限睡眠(无限阻塞)
- 递归复制文件夹,不包括一些文件夹
- 在Bash中传递带有空格的字符串作为函数参数
- 如何使Python脚本在Linux中像服务或守护进程一样运行
- 我可以将c#字符串值转换为转义字符串文字吗?
- 如何在文件中grep不区分大小写的字符串?
- 在c#中解析字符串为日期时间