sh循环在一个目录和子目录中匹配一个模式的所有文件



我想循环遍历匹配模式的文件。它们可以在当前目录或子目录中。

我试着:

for file in **/$_pat*; do

但是它只查找子目录中的文件。我也把下面的命令放在bashrc和脚本中,但它仍然不起作用。

shopt -s globstar

shopt在脚本中不被识别。

shopt: not found                              

使用find:

find "$_path" -type f -iname "*your_pattern*"

地点:

-iname=模式不区分大小写的匹配

-type f=只搜索常规文件,省略目录或链接

在循环中使用:

find "$_path" -type f -iname "*your_pattern*"|while read file
do
echo "$file"
done

for循环将不工作,如果你在结果中有空格,而while读取每个while行

根据您的最终目标,您可以在find中使用-exec:

find "$_path" -type f -iname "*your_pattern*" -exec echo {} ;

其中{}表示匹配的行/文件'

你还需要在末尾加上;

最新更新