Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 如何获取不同行中的文件名列表_Unix_Ls - Fatal编程技术网

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

Unix 如何获取不同行中的文件名列表,unix,ls,Unix,Ls,我想获得一个目录中所有文件的列表,比如ls,这样每个文件名都将位于单独的一行,而不需要ls-l提供额外的详细信息。我查看了ls--help,没有找到解决方案。我试过了 ls -l | cut --fields=9 -d" " 但是ls在列之间不使用固定数量的空格。关于如何做到这一点,最好是一行?也许: ls | awk '{print $NF}' ls|cat ... 或者可能是,ls-1ls-1 这是一个数字,不小L不带管道的解决方案:-) 请注意,仅在上支持长选项,其中仅支持短参数-1l

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

ls -l | cut --fields=9 -d" "
但是
ls
在列之间不使用固定数量的空格。关于如何做到这一点,最好是一行?

也许:

ls | awk '{print $NF}'
ls|cat
... 或者可能是,
ls-1
ls-1


这是一个数字,不小
L

不带管道的解决方案:-)


请注意,仅在上支持长选项,其中仅支持短参数
-1

ls-1
。从帮助中:

-1每行列出一个文件


适用于cygwin和FreeBSD,因此它可能不太特定于GNU。

使用sed命令列出单个列

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

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

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

否则你可以这样用

找到-最大深度1 | sed's/'

这两件事都是一样的。

试试这个:

$ ls | xargs -n num
这里的
num
是要列出的列数

这也可以

ls -l | awk '{print $NF}'

这也是有效的:echo-e“\n$(ls)”

请避免使用cat:)
cat在这种情况下不是无用的。它根据OP的要求将
ls
的输出格式化为一列。我在文档中看到了:交叉-x、逗号-m、水平-x、长-l、单列-1、详细-l、垂直-C我不确定他们是如何得出这些结果的。我得到了错误
sed:-e表达式#1,char 16:s命令的RHS
ls-l
上的无效引用\2生成与整个答案相同的输出。不确定这里添加了什么
sed
,它也适用于Ubuntu。ThanksHow这实际上与Eelvex有什么不同吗?注意:带有空格的文件名,如“apples and pears.jpg”,将变成“pears.jpg”
ls -l | awk '{print $NF}'