【问题标题】:Linux shell select files in directory and subdirectiry [closed]Linux shell选择目录和子目录中的文件[关闭]
【发布时间】:2021-07-30 08:51:02
【问题描述】:

为了选择文件夹中的所有 php 文件,我们使用:

vim *.php

如何使用该命令选择该目录及其子目录下的*.php文件?

【问题讨论】:

    标签: linux bash glob


    【解决方案1】:

    在 bash 中使用 shell 选项 `globstar` 可以使用

    vim **/*.php
    

    要启用 shell 选项,请使用例如

    shopt -s globstar
    

    【讨论】:

    • 效果很好,很棒!!!
    【解决方案2】:

    您可以将findxargs 结合使用:

    find . -type f -name '*.php' -print0 | xargs -0 vi
    

    find 将在当前目录中和当前目录下查找与*.php 匹配的所有常规文件,并将流中的所有名称发送到xargs,以NUL 字符分隔。

    xargs 程序(带有与-print0 匹配的-0)然后会将它们分成单独的文件名,并尽可能多地传递给单个vi 调用。如果一次调用不能满足所有要求(不太可能,除非文件数量确实很大),它会根据需要进行多次调用。

    【讨论】:

      【解决方案3】:

      你可以使用brace expansions:

      vim {,*/}*.php
      

      它是如何工作的

      • {,*/} 扩展为 <empty> dir1/ dir2/ ...
      • 最后的命令行是:ls *.php dir1/*.php dir2/*.php ...

      这仅匹配直接子目录,因此不会包含子目录的子目录。正如其他答案中提到的,findglobstar 更适合。

      【讨论】:

        猜你喜欢
        • 2012-10-05
        • 2012-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-15
        • 2020-03-08
        • 2012-12-14
        • 2011-12-04
        相关资源
        最近更新 更多