如何仅列出以逗号分隔的目录中的文件

use*_*407 8 ls text-formatting

所以没有目录也没有隐藏文件。只是文件。可以使用以下行仅列出文件。

ls -p | grep -v /
Run Code Online (Sandbox Code Playgroud)

现在我希望这一行的结果用逗号分隔。

Tho*_*mas 18

您可以tr用于该工作。

ls -p | grep -v / | tr '\n' ','
Run Code Online (Sandbox Code Playgroud)

  • 我从来不明白为什么别名甚至 * 存在 * - 使用一个函数:`lsf() { ls -p "$@" | grep -v / | tr '\n' ','; }` (2认同)

Raj*_*oni 8

您可以使用 GNUls -m命令。它将打印以逗号分隔的所有文件和目录。


Tsu*_*oku 7

Thomas 提出的解决方案有效,但它在最后一项添加了一个逗号(这可能不是您想要的)并删除了逗号后面的空格。以下替代方案保留逗号后面的空格,并且不在最后一项后面添加逗号:

 ls -1p | grep -v / | xargs echo | sed 's/ /, /g'
Run Code Online (Sandbox Code Playgroud)

当然,如果你想去掉项目之间的空格,只需调整 sed 表达式即可:

 ls -1p | grep -v / | xargs echo | sed 's/ /,/g'
Run Code Online (Sandbox Code Playgroud)

(使用小写“l”和数字“1”(一)的字体的查看者请注意:传递给的第一个选项ls1数字,而不是小写l。)

正如 Jim L 在评论中指出的那样,上述命令仅适用于不包含空格的文件名。以下命令可以解决这个问题:

 ls -1p | grep -v / | sed 's/$/, /g' | xargs echo | sed 's/,$//g' 
Run Code Online (Sandbox Code Playgroud)

在将列表传递给 ; 之前,这会用逗号替换行结尾echo。最后一部分删除了列表末尾的命令。