如何将ls -1的结果加入到一行中,并用我想要的任何内容将其分隔?
当前回答
如果你喜欢Python3,你可以这样做(但是请解释为什么你会这样做?):
ls -1 | python -c "import sys; print(','.join(sys.stdin.read().splitlines()))"
其他回答
我觉得这个很棒
ls -1 | awk 'ORS=","'
ORS是“输出记录分隔符”,所以现在你的行将用逗号连接。
设置IFS和使用“$*”的组合可以实现您想要的功能。我使用了一个subshell,所以我不会干扰这个shell的$IFS
(set -- *; IFS=,; echo "$*")
为了捕获输出,
output=$(set -- *; IFS=,; echo "$*")
这个命令是为PERL爱好者准备的:
ls -1 | perl -l40pe0
这里的40是空格的八进制ascii码。
-p将逐行处理并打印
-l将负责用我们提供的ASCII字符替换尾随的\n。
-e是通知PERL我们正在执行命令行。
0表示实际上没有命令要执行。
Perl -e0与Perl -e ' '相同
在majkinetor的回答之上,下面是删除尾随分隔符的方法(因为我还不能在他的回答下评论):
ls -1 | awk 'ORS=","' | head -c -1
只要删除分隔符所需要的尾随字节即可。
我喜欢这种方法,因为我可以使用多字符分隔符+ awk的其他好处:
ls -1 | awk 'ORS=", "' | head -c -2
EDIT
正如Peter所注意到的,head的原生MacOS版本不支持负字节计数。然而,这是很容易解决的。
首先,安装coreutils。GNU核心实用程序是GNU操作系统的基本文件、shell和文本操作实用程序。
brew install coreutils
MacOS提供的命令也以“g”开头安装。例如gls。
一旦你这样做了,你可以使用ghead,它有负字节计数,或者更好,使别名:
alias head="ghead"
Ls有选项-m,用“,”一个逗号和一个空格分隔输出。
ls -m | tr -d ' ' | tr ',' ';'
将此结果输送到tr以删除空格或逗号,这将允许您再次将结果输送到tr以替换分隔符。
在我的例子中,我用分隔符替换分隔符;
取代;使用您喜欢的任意一个字符分隔符,因为tr仅用于作为参数传入的字符串中的第一个字符。
推荐文章
- 如何在Typescript中解析JSON字符串
- 如何从查找“类型d”中排除此/ current / dot文件夹
- 检查bash变量是否等于0
- 如何分割逗号分隔的字符串?
- Java字符串—查看字符串是否只包含数字而不包含字母
- 在tmux中保持窗口名称固定
- 用javascript检查输入字符串中是否包含数字
- 只使用md5sum获取哈希值(没有文件名)
- 如何生成一个核心转储在Linux上的分段错误?
- 在Python中如何在Linux和Windows中使用“/”(目录分隔符)?
- 使用sh shell比较字符串
- Java:检查enum是否包含给定的字符串?
- 用PHP删除字符串的前4个字符
- 在Bash中测试非零长度字符串:[-n "$var"]或["$var"]
- 如何从字符串的开始或结束删除所有空白?