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

时间:2012-03-01 11:22:58

标签: regex linux shell ls

我想检查/proc中存在的所有关键文件。但是/proc具有与正在运行的进程相对应的无数目录。我不希望列出这些目录。所有这些目录'名称仅包含数字。由于我的正则表达式很差,任何人都可以告诉我regex我需要发送到ls以使其来搜索有数字的文件/目录他们的名字?

更新:感谢所有回复!但我希望有一个ls单独的解决方案,而不是ls+grep解决方案。到目前为止提供的ls单独的解决方案似乎无法正常工作!

6 个答案:

答案 0 :(得分:8)

您不需要grep,只需ls

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

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

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

答案 1 :(得分:6)

/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之类的任何regular files都会被排除在外?理论上是的,但我不认为你能做到这一点。尝试为不存在的PID创建文件:

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

答案 2 :(得分:2)

将grep与-v一起使用,告诉它打印模式不匹配的所有行。

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

答案 3 :(得分:1)

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

答案 4 :(得分:0)

以下正则表达式匹配除数字

之外的所有字符
^[\D]+?$

希望它有所帮助!

答案 5 :(得分:0)

为了完成。您可以通过find来应用Mithandir的答案。

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