我有这个文件结构
user@laptop:/my/folder$ ls
control changelog patches postrm source
copyright.in mime postinst rules
并希望列出名称中没有点的所有文件。不要用grep。反向看起来像:
user@laptop:/my/folder$ ls *[.]*
copyright.in
但是当我尝试添加否定(^或!)以实现我的目标时,它不起作用:
user@laptop:/my/folder$ ls *[^.]*
control copyright.in changelog mime postinst postrm rules
patches:
series 03-include-unistd-for-kfreebsd
01-manpages-in-section-1-not-in-section-1l 04-unzip60-alt-iconv-utf8
02-branding-patch-this-is-debian-unzip 04-unzip60-alt-iconv-utf8~
source:
format
在输出中列出了copyright.in,这不是我想要的。当我写?而不是*,它有效。:
user@laptop:/my/folder$ ls *[^.]??
control changelog mime postinst postrm rules
patches:
series 03-include-unistd-for-kfreebsd
01-manpages-in-section-1-not-in-section-1l 04-unzip60-alt-iconv-utf8
02-branding-patch-this-is-debian-unzip 04-unzip60-alt-iconv-utf8~
source:
format
有人知道如何使用globbing来制作目录中没有点名的文件列表吗?
答案 0 :(得分:2)
(对不起,最后一个答案,我完全误解了这个问题。)
您可以使用grep
:
[me@localhost ~]$ ls | grep -v '\.'
或find
:
[me@localhost ~]$ find . -maxdepth 1 -not -name '*\.*' -printf '%f\n'
甚至ls
:
[me@localhost ~]$ ls -1I '*.*'
所有产生相同的输出。 (-1
中的ls
不是必需的,只是强制每行一个文件名,使其输出与其他两个命令相同。)