我想循环遍历与模式匹配的文件。它们可以在当前目录或子目录中。我试过:
for file in **/$_pat*; do
但它只找到子目录中的文件。我也把下面的命令放在bashrc和脚本中,但它仍然不起作用。
bashrc
shopt -s globstar
脚本中无法识别shopt。
shopt
shopt: not found
7y4bm7vi1#
使用find:
find
find "$_path" -type f -iname "*your_pattern*"
其中:-iname =模式的不区分大小写匹配-type f =仅搜索常规文件,忽略目录或链接要在循环中使用它:
-iname
-type f
find "$_path" -type f -iname "*your_pattern*"|while read file do echo "$file" done
如果结果中有空格,for循环将不起作用,而while读取每一个while行根据你想做的事情,你可以在find中使用-exec:
for
while
find "$_path" -type f -iname "*your_pattern*" -exec echo {} \;
其中{}将表示匹配的行/文件最后你还需要;`
{}
最后你还需要
1条答案
按热度按时间7y4bm7vi1#
使用
find
:其中:
-iname
=模式的不区分大小写匹配-type f
=仅搜索常规文件,忽略目录或链接要在循环中使用它:
如果结果中有空格,
for
循环将不起作用,而while
读取每一个while行根据你想做的事情,你可以在find中使用-exec:
其中
{}
将表示匹配的行/文件最后你还需要
;`