我想检查我的/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