如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
这个命令是为PERL爱好者准备的:
ls -1 | perl -l40pe0
这里的40是空格的八进制ascii码。
-p将逐行处理并打印
-l将负责用我们提供的ASCII字符替换尾随的\n。
-e是通知PERL我们正在执行命令行。
0表示实际上没有命令要执行。
Perl -e0与Perl -e ' '相同
其他回答
看起来答案已经存在了。
如果你愿意 a, b, c格式,使用ls -m (Tulains Córdova的答案)
或者如果你想要bc格式,使用ls | xargs (Chris J回答的简化版本)
或者如果你想要任何其他的分隔符,如|,使用ls |粘贴-sd'|' (Artem ' s answer的应用)
用换行符替换最后一个逗号:
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的建议。
这个命令是为PERL爱好者准备的:
ls -1 | perl -l40pe0
这里的40是空格的八进制ascii码。
-p将逐行处理并打印
-l将负责用我们提供的ASCII字符替换尾随的\n。
-e是通知PERL我们正在执行命令行。
0表示实际上没有命令要执行。
Perl -e0与Perl -e ' '相同
编辑:如果您希望分隔符为逗号,则只需“ls -m”
啊,力量和简单!
ls -1 | tr '\n' ','
把逗号“,”改成任何你想要的。注意,这包括一个“尾随逗号”(用于以换行符结束的列表)。
你可以使用:
ls -1 | perl -pe 's/\n$/some_delimiter/'