列出所有没有扩展名的文件


11

我想列出目录中没有扩展名的所有文件。

例如:

$ ls
a.txt    b      c.pdf     d     e.png
$ ls -someOption
b       d

我可以使用什么命令代替ls -someOption


通常,如果您想了解命令的选项,请在终端中键入“ man <command>”以阅读其手册页。man代表手册(帮助)。例如
-man

@AadityaBagga在这种情况下,手册中找不到答案。
wisbucky 2013年

在这种情况下,您是否考虑.gitignore扩展?
阿米特·奈杜

Answers:


14
shopt -s extglob ## enables extended globbing
ls !(*.*) ## matches every file except those containing a dot

您会发现这样做会向您显示工作目录中每个目录的内容。如果您不想这样做,请使用:

ls -d !(*.*)

你可以把shopt -s extglob~/.bashrc把它激活,只要你打开一个终端。默认的Ubuntu中已经有一行~/.bashrc(13.04上我的第29行),您可以取消注释以启用它(和globstar)。

请参阅Greg的Wiki,以获取有关Shell各种glob选项的更多信息。请注意,这是bash shell的属性,而不是ls命令的属性,因此您可以将其与其他命令一起使用。

或者,您可以使用

ls --ignore='*.*'

要么

ls -I '*.*'

...这是一个内部ls选项,但是extglob可以应用于任何任意命令,因此在我看来更有用。


1
OP没有提到哪个shell,尽管我猜是bash被假定了。如果是ksh,则不需要extglob。默认情况下,仅:ls !(*.*)
runrig 2013年

1
@runrig您是非常正确的,但是鉴于问题的基本性质,我认为OP使用的是默认的bash shell。
evilsoup

10

无论ls | grep -v \\.ls | grep -v "\."作品。

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.