Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 列出所有不以数字开头的文件_Regex_Linux_Shell_Ls - Fatal编程技术网

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位,GNU
ls
8.5至少在一台机器上),它只显示没有数字的文件和目录,从
/proc/acpi
/proc/zoneinfo
ls
是出了名的不可移植的,所以它可能只是
-d
在你的版本中做了一些完全不同的事情。哎呀!你是对的!我在我的Ubuntu 11.10上运行了你的命令,它运行得很好!我在一个IX 6.1,前几天(再次确认)它坏了!!我不明白为什么!
man ls
和搜索
-d
在两个系统上几乎给出了相似的解释,目录将被视为任何其他文件!为什么会有这种差异?!