linux sh循环,用于目录和子目录中与模式匹配的所有文件

jmp7cifd  于 2023-04-20  发布在  Linux
关注(0)|答案(1)|浏览(186)

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

for file in **/$_pat*; do

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

shopt -s globstar

脚本中无法识别shopt

shopt: not found
7y4bm7vi

7y4bm7vi1#

使用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 {} \;

其中{}将表示匹配的行/文件最后你还需要;`

相关问题