Regex 列出所有不以数字开头的文件
我想检查我的Regex 列出所有不以数字开头的文件,regex,linux,shell,ls,Regex,Linux,Shell,Ls,我想检查我的/proc中存在的所有关键文件。但是/proc有无数与正在运行的进程相对应的目录。我不想列出这些目录。所有这些目录的名称只包含数字。由于我不擅长正则表达式,有谁能告诉我我需要发送到ls的regex是什么,以便而不是搜索名称中包含数字的文件/目录 更新:感谢所有回复!但是我希望有一个ls单独的解决方案,而不是ls+grep解决方案。迄今为止,仅提供的ls解决方案似乎不起作用 将grep与-v一起使用,告诉它打印所有与模式不匹配的行 ls /proc | grep -v '[0-9+]
/proc
中存在的所有关键文件。但是/proc
有无数与正在运行的进程相对应的目录。我不想列出这些目录。所有这些目录的名称只包含数字。由于我不擅长正则表达式,有谁能告诉我我需要发送到ls
的regex
是什么,以便而不是搜索名称中包含数字的文件/目录
更新:感谢所有回复!但是我希望有一个
ls
单独的解决方案,而不是ls+grep
解决方案。迄今为止,仅提供的ls
解决方案似乎不起作用 将grep与-v
一起使用,告诉它打印所有与模式不匹配的行
ls /proc | grep -v '[0-9+]'
下面的正则表达式匹配除数字以外的所有字符
^[\D]+?$
希望有帮助
ls/proc | grep-v-E'[0-9]+'
你不需要grep,只要ls
:
ls -ad /proc/[^0-9]*
如果要搜索整个子目录结构,请使用“查找”:
find /proc/ -type f -regex "[^0-9]*" -print
为了完成。你可以用find应用Mithandir的答案
find . -name "[^0-9]*" -type f
/proc
中不包含数字的所有文件和目录(换句话说,不包括进程目录):
/proc
下所有不以数字开头的递归文件:
find /proc -regex '.*/[0-9].*' -prune -o -print
find /proc -regex '/proc/[0-9].*' -prune -o -print
但是这也将排除子目录中的数字文件(例如/proc/foo/bar/123
)。如果要仅排除带有数字的顶级文件,请执行以下操作:
find /proc -regex '.*/[0-9].*' -prune -o -print
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
我认为您的
ls
解决方案有问题。它列出了文件夹中以数字开头的所有文件!我不想要那些以数字开头的目录!甚至find
解决方案也会冲进名称中带有数字的文件夹!我遗漏了什么吗?-1除了@Stacker,有人试过这些命令吗?ls
列出了正确的文件,但也列出了/proc/*/
的目录内容。“查找”中清楚地列出了所有进程目录及其文件。@Stacker:很抱歉,错过了一个option@Mithrandir:OP希望排除“与正在运行的进程相对应的目录”,而该命令同时执行其他操作。ls-d/proc/[^0-9]*
精确列出了包含数字的目录(我不想要:()即进程目录!这里也有些可疑!@Stacker:你在哪个操作系统上?ls--version返回什么?我在两个不同的发行版上运行过这个(Ubuntu 64位和Linux Mint 64位,GNUls
8.5至少在一台机器上),它只显示没有数字的文件和目录,从/proc/acpi
到/proc/zoneinfo
ls
是出了名的不可移植的,所以它可能只是-d
在你的版本中做了一些完全不同的事情。哎呀!你是对的!我在我的Ubuntu 11.10上运行了你的命令,它运行得很好!我在一个IX 6.1,前几天(再次确认)它坏了!!我不明白为什么!man ls
和搜索-d
在两个系统上几乎给出了相似的解释,目录将被视为任何其他文件!为什么会有这种差异?!