Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/22.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
Linux 将第一个单词作为ls-l的结果_Linux_Bash_Ls - Fatal编程技术网

Linux 将第一个单词作为ls-l的结果

Linux 将第一个单词作为ls-l的结果,linux,bash,ls,Linux,Bash,Ls,我需要使用ls-l,并且我希望得到文件名的第一个字,例如,这样的结果 -rw-r--r-- 1 root root 9 Sep 21 23:11 best file 1.txt 我只想 best 因为我需要把这个值放到一个变量中。如果有其他方法代替使用ls-l,也可以 …很抱歉再次打扰您…如果该文件位于子目录下,如何隐藏该文件夹而不显示结果?谢谢 set -- $(ls -l) echo ${11} # Assumes the file is th

我需要使用
ls-l
,并且我希望得到文件名的第一个字,例如,这样的结果

-rw-r--r--    1 root     root             9 Sep 21 23:11 best file 1.txt
我只想

best
因为我需要把这个值放到一个变量中。如果有其他方法代替使用
ls-l
,也可以

…很抱歉再次打扰您…如果该文件位于子目录下,如何隐藏该文件夹而不显示结果?谢谢

set -- $(ls -l)
echo ${11}    # Assumes the file is the FIRST one listed.

我们应该做到这一点。但我不确定这是否真的是你想要的。首先,
ls-l
还打印一个额外的标题行。你为什么说你需要使用ls-l?如果您能说明实际问题,也许我们可以一起找到更好的解决方案……

您不需要使用
ls-l
(l)

相反,使用仅输出文件名的
ls-1
(第一个),然后使用
cut
过滤掉第一列:

ls -1 | cut -d' ' -f1
    ^
    number one, not letter L
要将值存储到变量中,请执行以下操作:

var=$(ls -1 | cut -d' ' -f1)
注意:解析
ls
:列的数量可能会有所不同,等等。您可以在中阅读有关该主题的更多信息

更新 注:甚至不需要使用
-1
(一),仅使用
ls
即可:

ls | cut -d' ' -f1

如下所示,“因为它们是跨管道分离的EOL(线端)。

awk
可以为您选择第一个单词

ls | awk '{print $1}'
尝试:


第4行将有第一行文件$9表示第9列将有所需的字。

如果只有一行要输出,这将正常工作:

var=`ls -l | awk '{ print $9 }'`
echo ${var}

或者,您需要使用
grep
来筛选正确文件的输出。

不要解析ls@avinash:某些理由可能有用;)@OliverCharlesworth在我的回答中看到了链接。非常感谢各位,所有的解决方案都很好地工作,并感谢提示不要认为
-1
实际上在这里做了任何事情,因为它们在管道中是分离的。@BroSlow非常正确。更新了,非常感谢你们的解释。伙计们,我混合了你们所有的解决方案,最终解决了这个问题…非常感谢你们所有人的努力和善意的支持!
NR==4
在这里有什么用?您只需要第一个文件的名称。前3行包含。或因此,第4行有第一个文件的详细信息。第9列有它的名字。如果单独解析ls是不好的,那么考虑到.,..等来解析ls就更危险了。我建议你读一读,我同意你的观点,但是OP想要ls-l。我认为OP应该采纳你的建议,使用你前面提到的ls-1(一)。
var=`ls -l | awk '{ print $9 }'`
echo ${var}