![使用带有管道的 ls -l 如何让它显示列表中的第 8 个文件而不显示文件详细信息](https://linux22.com/image/1316079/%E4%BD%BF%E7%94%A8%E5%B8%A6%E6%9C%89%E7%AE%A1%E9%81%93%E7%9A%84%20ls%20-l%20%E5%A6%82%E4%BD%95%E8%AE%A9%E5%AE%83%E6%98%BE%E7%A4%BA%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E7%AC%AC%208%20%E4%B8%AA%E6%96%87%E4%BB%B6%E8%80%8C%E4%B8%8D%E6%98%BE%E7%A4%BA%E6%96%87%E4%BB%B6%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF.png)
我希望使用 ls -l 和管道显示目录中的第 8 个文件名,例如 ls -l | wc -1 会给我计数,但我想要返回的是目录列表中的第 8 个文件名,无论它是什么。我查看了 grep 和通配符,但仍然没有看到哪个命令可以给我我想要的结果。
谢谢
答案1
尝试
ls -l | head -n 9 | tail -n 1
如果你只想要名字,你可以cut
在最后使用
ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8
tr
是用一个空格替换多个空格和制表符
答案2
另一种方式是这样的。
ls -l | sed -n '9p'
如果您只想要文件或目录名称,请使用这个。
ls -l | sed -n '9p' | awk '{print $9}'
jcubic 你确定这是你想要的吗?
ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f8
我认为他想要这样的文件或目录名称。
ls -l | head -n 9 | tail -n 1 | tr -s ' ' | cut -d' ' -f9
答案3
ls | awk 'NR==8'
- 你不需要
ls -l
获得 1 列输出,或者即使ls -1
你将输出抛出到管道(参见例如ls 输出中文件名之间的魔术分隔符是什么?)。 NR==8
仅对第 8 行返回 true,然后awk
默认操作是打印它。
答案4
不要使用-l
ls | 头 -8 | 尾 -1
您将获得文件名,ls
并将其与文件顺序相同ls -l
。