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

Pav*_*ath 7 regex linux shell ls

我想检查一下我的所有关键文件/proc.但是/proc有无数的目录对应于正在运行的进程.我不希望列出这些目录.所有这些目录的名称只包含数字.由于我在正则表达式中很差,有人能告诉我regex我需要发送的内容,ls以便搜索名称中包含数字的文件/目录吗?

更新:感谢所有的回复!但我希望有一个ls单独的解决方案而不是ls+grep解决方案.ls到目前为止提供的独立解决方案似乎不起作用!

Mit*_*dir 8

你不需要grep,只需ls:

ls -ad /proc/[^0-9]*
Run Code Online (Sandbox Code Playgroud)

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

find /proc/ -type f -regex "[^0-9]*" -print
Run Code Online (Sandbox Code Playgroud)


l0b*_*0b0 6

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

ls -d /proc/[^0-9]*
Run Code Online (Sandbox Code Playgroud)

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

find /proc -regex '.*/[0-9].*' -prune -o -print
Run Code Online (Sandbox Code Playgroud)

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

find /proc -regex '/proc/[0-9].*' -prune -o -print
Run Code Online (Sandbox Code Playgroud)

坚持下去!这是否意味着将排除由... 等创建的常规文件touch /proc/123?理论上是的,但我不认为你能做到这一点.尝试为不存在的PID创建文件:

$ sudo touch /proc/123
touch: cannot touch `/proc/123': No such file or directory
Run Code Online (Sandbox Code Playgroud)