我想检查我的/proc
中存在的所有关键文件。但是/proc
有与运行进程相对应的无数目录。我不希望这些目录被列出。所有这些目录的名字只包含数字。正如我在正则表达式穷人,谁能告诉我什么regex
,我需要发送到ls
,使其不是搜索其名称中的数字的文件/目录?列出所有不以数字开头的文件
UPDATE:感谢所有答复!但我很想拥有一个ls
独立解决方案,而不是ls+grep
解决方案。迄今为止提供的ls
单独解决方案似乎并不奏效!
我想检查我的/proc
中存在的所有关键文件。但是/proc
有与运行进程相对应的无数目录。我不希望这些目录被列出。所有这些目录的名字只包含数字。正如我在正则表达式穷人,谁能告诉我什么regex
,我需要发送到ls
,使其不是搜索其名称中的数字的文件/目录?列出所有不以数字开头的文件
UPDATE:感谢所有答复!但我很想拥有一个ls
独立解决方案,而不是ls+grep
解决方案。迄今为止提供的ls
单独解决方案似乎并不奏效!
在/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
使用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
我认为你的'ls'解决方案有些问题。它列出了以数字开头的文件夹内的所有文件!我不想要以数字开头的目录! – 2012-03-01 11:35:30
即使是“find”解决方案也会冲入名称中带有数字的文件夹!我错过了什么? – 2012-03-01 11:46:00
-1除了@Stacker之外,有没有人试过这些命令?'ls'列出正确的文件,还列出'/ proc/* /'的目录内容。 'find'清楚地列出了所有的进程目录及其文件。 – l0b0 2012-03-01 12:07:41
对于着想完成。您可以将Mithandir的答案与find一起应用。
find . -name "[^0-9]*" -type f
'ls -d/proc/[^ 0-9] *'精确地列出了包含数字的目录(我不想:()即处理目录!这里也有些东西可疑! – 2012-03-01 14:58:34
@Stacker:你在哪个操作系统上?ls --version'返回的是什么?我在两个不同的发行版上运行了这个(至少在一台机器上是Ubuntu 64位和Linux Mint 64位,GNU'ls' 8.5),它只显示文件和目录*不带*号,从'/ proc/acpi'到'/ proc/zoneinfo'。*'ls'是臭名昭着的不可移植的*,所以它可能只是因为'-d'在你的版本中做了完全不同的事情 – l0b0 2012-03-02 18:44:11
哎呀!你是对的!我在你的Ubuntu 11.10上运行了你的命令,它工作得很好!我在AIX 6.1上,有一天(再次确认),它打破了!!我很困惑,为什么!在两个系统上搜索'-d'几乎给出了类似的解释,即目录将被视为任何其他文件!为什么这不相同? – 2012-03-03 06:51:25