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


当前回答

这个命令是为PERL爱好者准备的:

ls -1 | perl -l40pe0

这里的40是空格的八进制ascii码。

-p将逐行处理并打印

-l将负责用我们提供的ASCII字符替换尾随的\n。

-e是通知PERL我们正在执行命令行。

0表示实际上没有命令要执行。

Perl -e0与Perl -e ' '相同

其他回答

Ls有选项-m,用“,”一个逗号和一个空格分隔输出。

ls -m | tr -d ' ' | tr ',' ';'

将此结果输送到tr以删除空格或逗号,这将允许您再次将结果输送到tr以替换分隔符。

在我的例子中,我用分隔符替换分隔符;

取代;使用您喜欢的任意一个字符分隔符,因为tr仅用于作为参数传入的字符串中的第一个字符。

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

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

为了捕获输出,

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

如果你喜欢Python3,你可以这样做(但是请解释为什么你会这样做?):

ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"

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

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

不要白费力气。

ls -m

它就是这么做的。