列出所有不以数字开头的文件

我想检查我的/proc存在的所有关键文件。 但是/proc拥有与正在运行的进程相对应的无数目录。 我不希望这些目录被列出。 所有这些目录的名字只包含数字。 由于我在正则expression式穷,谁能告诉我什么是regex ,我需要发送给ls ,使其search名称中有数字的文件/目录?

更新 :感谢所有的答复! 但我希望有一个独立的解决scheme,而不是ls+grep解决scheme。 迄今为止提供的解决scheme似乎并没有工作!

/proc中不包含数字的所有文件和目录(换句话说,不包括进程目录):

 ls -d /proc/[^0-9]* 

/proc下的所有文件都不是以数字开头的:

 find /proc -regex '.*/[0-9].*' -prune -o -print 

但是这也会排除子目录中的数字文件(例如/proc/foo/bar/123 )。 如果您只想排除带有数字的顶级文件:

 find /proc -regex '/proc/[0-9].*' -prune -o -print 

再坚持一下! 这是否意味着touch /proc/123等创建的任何常规文件将被排除? 理论上是的,但我不认为你可以这样做。 尝试创建一个不存在的PID文件:

 $ sudo touch /proc/123 touch: cannot touch `/proc/123': No such file or directory 

你不需要grep,只需要ls

 ls -ad /proc/[^0-9]* 

如果要搜索整个子目录结构使用find:

 find /proc/ -type f -regex "[^0-9]*" -print 

使用grep -v来告诉它打印所有不符合模式的行。

  ls /proc | grep -v '[0-9+]' 

ls /proc | grep -v -E '[0-9]+'

遵循正则表达式匹配除数字之外的所有字符

 ^[\D]+?$ 

希望能帮助到你 !

为了完成。 您可以将Mithandir的答案与find一起应用。

  find . -name "[^0-9]*" -type f