如何获取不同行中的文件名列表

Posted

技术标签:

【中文标题】如何获取不同行中的文件名列表【英文标题】:How to get a list of file names in different lines 【发布时间】:2011-07-06 13:17:39 【问题描述】:

我想获取一个目录中所有文件的列表,例如ls,这样每个文件名将位于单独的行上,而没有ls -l 提供的额外详细信息。我查看了ls --help 并没有找到解决方案。我试过做

ls -l | cut --fields=9 -d" "

ls 没有在列之间使用固定数量的空格。关于如何做到这一点的任何想法,最好是一行?

【问题讨论】:

【参考方案1】:

这也有效:echo -e "\n$(ls)"

【讨论】:

【参考方案2】:

这样也可以

ls -l | awk 'print $NF'

【讨论】:

这与 Eelvex 的 answer 有什么不同?【参考方案3】:

试试这个:

$ ls | xargs -n num

这里num 是您要列出的列数。

【讨论】:

【参考方案4】:

没有管道的解决方案:-)

 ls --format single-column

请注意,长选项仅在 GNU coreutils 上受支持,其中 BSD ls 仅支持短参数 -1

【讨论】:

【参考方案5】:

首先你可以使用它。它将每行显示一个文件。

ls -l | sed 's/(.* )(.*)$/\2/'

否则你可以这样使用

找到 . -maxdepth 1 | sed 's/.///'

两者都是一样的。

【讨论】:

我收到错误sed: -e expression #1, char 16: invalid reference \2 on `s' command's RHS【参考方案6】:

使用 sed 命令列出单个列

ls -l | sed 's/\(^[^0-9].\*[0-9]\*:[0-9]\*\) \(.*\)/\2/'

【讨论】:

ls -l 产生与您的整个答案相同的输出。不确定sed 在这里添加了什么...【参考方案7】:

ls -1。来自帮助:

-1 每行列出一个文件

在 cygwin 和 FreeBSD 上工作,所以它可能不是太特定于 GNU。

【讨论】:

也适用于 Ubuntu。谢谢【参考方案8】:

ls -1

这是一个数字,不小L

【讨论】:

我在文档中看到了这个:交叉 -x,逗号 -m,水平 -x,长 -l,单列 -1,详细 -l,垂直 -C 我不确定如何他们想出了其中的一些。【参考方案9】:

ls | cat ... 或者可能,ls -1

【讨论】:

请避免无用的使用 cat :) cat 在这种情况下并不是没用的。它按照 OP 的要求将ls 的输出格式化在一列中。【参考方案10】:

也许:

ls | awk 'print $NF'

【讨论】:

注意:带有空格的文件名如“apples and pears.jpg”会变成“pears.jpg”

以上是关于如何获取不同行中的文件名列表的主要内容,如果未能解决你的问题,请参考以下文章

从一个 MySqli 查询中的不同行获取值

如何在分页之前获取不同行的总数?

如何获取对等列表?

如何从一列的不同行中获取值以分隔列

谷歌驱动器重定向 URI 不匹配以及如何从 ASP.net 核心 2.0 中的谷歌驱动器获取文件列表

如何获取系统中的网络浏览器列表