我想列出目录中所有没有扩展名的文件。
例如:
$ ls
a.txt b c.pdf d e.png
$ ls -someOption
b d
我可以使用什么命令来代替ls -someOption
?
答案1
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)。
看格雷格的维基有关 shell 的各种通配符选项的更多信息。请注意,这是 bash shell 的属性,而不是命令的属性ls
,因此您可以将其与其他命令一起使用。
或者,您可以使用
ls --ignore='*.*'
或者
ls -I '*.*'
...这是一个内部ls
选项,但 extglob 可以应用于任意命令,因此在我看来更有用。
答案2
ls | grep -v \\.
和都ls | grep -v "\."
有效。