Linux shell select 目录和子目录中的文件

Linux shell select files in directory and subdirectiry

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

vim *.php

如何使用此命令选择本目录及其子目录中的*.php个文件?

您可以将 findxargs 结合使用:

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

find会在当前目录下定位所有匹配*.php的常规文件,并将所有名称以流的形式发送到xargs,以[=16=分隔] ] 个字符。

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

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

vim **/*.php

要启用 shell 选项,请使用

shopt -s globstar

您可以使用 brace expansions:

vim {,*/}*.php

它是如何工作的

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

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