Linux shell select 目录和子目录中的文件
Linux shell select files in directory and subdirectiry
要选择文件夹中的所有 php 个文件,我们使用:
vim *.php
如何使用此命令选择本目录及其子目录中的*.php个文件?
您可以将 find
与 xargs
结合使用:
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 ...
这仅匹配直接子目录,因此不会包含子目录的子目录。正如其他答案中提到的,find
或 globstar
更适合。
要选择文件夹中的所有 php 个文件,我们使用:
vim *.php
如何使用此命令选择本目录及其子目录中的*.php个文件?
您可以将 find
与 xargs
结合使用:
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 ...
这仅匹配直接子目录,因此不会包含子目录的子目录。正如其他答案中提到的,find
或 globstar
更适合。