我怎样才能使ls只显示文件?


24

我认为必须有一种方法使ls只显示非目录,但是手册页并没有使它显而易见


不确定ls,但是您可以使用以下file命令轻松完成此操作:file /directory/containing/the/files -maxdepth 1 -not -type d
Henning Kockerbeck '16

1
另一种方法是过滤lsthrough 的输出grep,例如ls -1F /directory/containing/the/files | grep -vE /$。但是请注意,解析ls的输出可能很棘手
Henning Kockerbeck '16

Answers:


37
ls -p | grep -v /

使用ls -ptells ls将斜杠添加到目录条目中,并使用grep -v /tells grep仅返回包含斜杠的行。


我检查了这个,因为它是我最喜欢的答案(虽然我都赞成),但是现在尝试寻找一种方法将其放在列中并反转输出顺序...
thinksinbinary

“您可以为单列列表使用1个开关”对不起,我确实想弄清楚您的意思,如果您愿意,我将不胜感激,并进行示例/解释,我只知道关于C编程的开关是什么
thinksinbinary

@sdkks 1在管道输出时不需要此开关,因为在这种情况下它将默认为单列。如果那是你的意思。
thomasrutter

@thinksinbinary不知道如何使它成为多列,但您可以搜索或提出自己的独立问题,某人会知道。
thomasrutter '16

7

您可以尝试以下方法:

find . -maxdepth 1 -not -type d

并将其映射到一个特殊的别名。

但是,如果您真的很想使用该ls命令,请在此处:

ls -p | egrep -v /$


6

或者:

ls -lAh | grep -v '^d'

此方法在

  • -l 长清单格式
  • -A 显示几乎所有内容(显示隐藏文件,但不显示...
  • -h 可读文件大小

而grep

  • -v 不显示匹配记录
  • Regular expression过滤器^d-那些下手字母d(对于目录),即drwxrwxr-x <some file details> <foldername>

如果您不想每次都输入,可以将其设为bash / shell配置文件的别名。


2

我在您的(@thinksinbinary)评论@thomasrutter的答案中看到,您希望能够以相反的顺序和列打印它们。您可能已经想通了或继续进行,但是这里是:

ls -pr | grep -v / | column
  • -p将正斜杠('/')添加到目录名称
  • -r反转输出顺序
  • -v让grep进行反向搜索以打印除目录外的所有内容所有不带-p的'/'的内容
  • 专栏将其放入专栏”- 上尉船长

1
我确实认为,在ubuntu论坛上,人们经过很长时间仍在评论并阅读您的帖子,这很酷。我一直想回到linux来学习汇编和操作系统,因为在Windows上这样做要困难得多。谢谢!
thinksinbinary

0
ls -F | grep -v /

上面的命令显示文件,但是它包含符号链接,管道等。如果您也想删除它们,则可以使用下面提到的标志之一。

ls -F将符号附加到文件名。这些符号显示有关文件的有用信息。

ls -F | grep -Ev '/|@|*|=|>|\|'

上面的命令仅显示文件。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.