我想检查/proc
中存在的所有关键文件。但是/proc
具有与正在运行的进程相对应的无数目录。我不希望列出这些目录。所有这些目录'名称仅包含数字。由于我的正则表达式很差,任何人都可以告诉我regex
我需要发送到ls
以使其不来搜索有数字的文件/目录他们的名字?
更新:感谢所有回复!但我希望有一个ls
单独的解决方案,而不是ls+grep
解决方案。到目前为止提供的ls
单独的解决方案似乎无法正常工作!
答案 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