【问题标题】:List all files not starting with a number列出所有不以数字开头的文件
【发布时间】:2012-03-19 21:24:09
【问题描述】:

我想检查我的/proc 中存在的所有关键文件。但是/proc 有无数的目录对应着正在运行的进程。我不希望列出这些目录。所有这些目录的名称都只包含数字。由于我的正则表达式很差,谁能告诉我我需要发送到lsregex 是什么,以使其 搜索名称中有数字的文件/目录?

更新:感谢所有回复!但我希望有一个 ls 单独的解决方案,而不是 ls+grep 解决方案。迄今为止提供的 ls 单独的解决方案似乎不起作用!

【问题讨论】:

    标签: regex linux shell ls


    【解决方案1】:

    你不需要grep,只需要ls

    ls -ad /proc/[^0-9]*
    

    如果您想搜索整个子目录结构,请使用 find:

    find /proc/ -type f -regex "[^0-9]*" -print
    

    【讨论】:

    • 我认为您的 ls 解决方案有问题。它列出了以数字开头的文件夹中的所有文件!我根本不想要以数字开头的目录!
    • 即使是find 解决方案也会涌入名称中带有数字的文件夹!我错过了什么吗?
    • -1 除了@Stacker 之外的其他人是否尝试过这些命令? ls 列出了正确的文件,但也列出了/proc/*/ 的目录内容。而find 清楚地列出了所有进程目录及其文件。
    • @Stacker : 抱歉错过了一个选项
    • @Mithrandir:OP 想要排除“与正在运行的进程相对应的目录”,并且该命令完全做了其他事情。
    【解决方案2】:

    /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
    

    【讨论】:

    • ls -d /proc/[^0-9]* 准确列出了包含数字的目录(我不想要:()即进程目录!这里也有问题!
    • @Stacker:你在哪个操作系统上? ls --version 返回什么?我已经在两个不同的发行版(Ubuntu 64 位和 Linux Mint 64 位,GNU ls 8.5 至少在一台机器上)上运行它,它只显示文件和目录没有数字,从/proc/acpi/proc/zoneinfols 是出了名的不可移植,所以可能只是 -d 在你的版本中做了一些完全不同的事情。
    • 糟糕!你说的对!我在我的 Ubuntu 11.10 上运行了你的命令,它工作得很好!前几天我在 AIX 6.1 上(再次确认)它坏了!我很困惑为什么! man ls 和搜索 -d 在两个系统上几乎给出了类似的解释,即目录将被视为任何其他文件!为什么会有这种差异?!
    【解决方案3】:

    为了完成。您可以通过 find 应用 Mithandir 的答案。

      find . -name "[^0-9]*" -type f
    

    【讨论】:

      【解决方案4】:

      ls /proc | grep -v -E '[0-9]+'

      【讨论】:

        【解决方案5】:

        以下正则表达式匹配除数字以外的所有字符

        ^[\D]+?$
        

        希望对你有帮助!

        【讨论】:

          【解决方案6】:

          使用 grep 和 -v 告诉它打印所有 不匹配模式的行。

           ls /proc | grep -v '[0-9+]'
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-08-13
            • 2015-04-06
            • 2015-08-09
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多