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