如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
上面的Python回答很有趣,但自己的语言甚至可以使输出更好:
python -c "import sys;打印(sys.stdin.read () .splitlines())”
其他回答
类似于第一个选项,但省略了后面的分隔符
ls -1 | paste -sd "," -
你可以使用chomp将多行合并成一行:
Perl -e 'while (<>) {if (/\$/) {chomp;}' bad0 >test
在if语句中加入换行条件。它可以是特殊字符或任何分隔符。
如果你喜欢Python3,你可以这样做(但是请解释为什么你会这样做?):
ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"
用换行符替换最后一个逗号:
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是“输出记录分隔符”,所以现在你的行将用逗号连接。