微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux shell 选择目录和子目录中的文件

如何解决Linux shell 选择目录和子目录中的文件

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

vim *.PHP

如何使用该命令选择本目录及其子目录中的*.PHP文件

解决方法

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

vim **/*.php

要启用外壳选项,请使用例如

shopt -s globstar
,

您可以将 findxargs 结合使用:

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

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

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

,

您可以使用 brace expansions

vim {,*/}*.php

它是如何工作的

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。