Bash递归通配符:globstar详解

什么是 shopt -s globstar

shopt -s globstar 是 Bash shell 中的一个选项,用于启用递归通配符模式匹配。通过启用 globstar,可以使用 ** 通配符来递归匹配目录中的所有文件和子目录。这一功能在处理复杂的文件结构时非常有用,能够简化脚本编写和命令行操作。

启用 globstar 选项

在 Bash 中,shopt 命令用于管理 shell 选项。要启用 globstar,可以运行以下命令:

shopt -s globstar

启用后,** 将能够递归匹配目录中的内容。如果需要禁用该选项,可以使用:

shopt -u globstar

递归匹配文件的基本用法

启用 globstar 后,** 可以匹配零个或多个目录层级。例如:

ls **/*.txt

这条命令会递归列出当前目录及其子目录中的所有 .txt 文件。** 会匹配任意深度的子目录,而 *.txt 则匹配文件名。

* 通配符的区别

普通的 * 通配符只能匹配当前目录中的文件和目录,不会递归进入子目录。例如:

ls *.txt

这条命令仅列出当前目录中的 .txt 文件,不会递归搜索子目录。

递归匹配目录

** 不仅可以用于匹配文件,还可以用于匹配目录。例如:

ls **/dir/

这条命令会递归查找所有名为 dir 的目录。注意末尾的 / 确保只匹配目录而非文件。

结合其他通配符使用

** 可以与其他通配符结合使用,实现更复杂的匹配模式。例如:

ls **/*[0-9].log

这条命令会递归查找所有以数字结尾的 .log 文件。

递归删除或复制文件

globstar 在处理批量操作时特别有用。例如,递归删除所有 .tmp 文件:

rm **/*.tmp

递归复制所有 .jpg 文件到目标目录:

cp **/*.jpg /target/dir/

注意事项

** 的递归匹配可能会因为目录结构过于复杂或文件数量过多而导致性能问题。在实际使用中,建议先通过 echols 测试匹配结果,再执行删除或修改操作。

与其他工具的结合

globstar 可以与 find 命令结合使用,但 ** 的语法更简洁。例如:

find . -name "*.txt"

与以下命令等效:

ls **/*.txt

** 的语法更直观且易于记忆。

实际应用示例

以下是一个实际脚本示例,用于递归查找并处理所有 .csv 文件:

#!/bin/bash
shopt -s globstar
for file in **/*.csv; do
    echo "Processing $file"
    # 处理文件的逻辑
done

兼容性说明

globstar 是 Bash 4.0 及以上版本的功能。如果使用的是旧版本 Bash,可能需要升级。可以通过以下命令检查 Bash 版本:

bash --version

总结

shopt -s globstar 是一个强大的工具,能够简化递归文件操作。通过启用 globstar,可以轻松地使用 ** 通配符递归匹配文件和目录,提高脚本编写和命令行操作的效率。

BbS.okapop163.sbs/PoSt/1122_733014.HtM
BbS.okapop165.sbs/PoSt/1122_680264.HtM
BbS.okapop166.sbs/PoSt/1122_397550.HtM
BbS.okapop167.sbs/PoSt/1122_223776.HtM
BbS.okapop168.sbs/PoSt/1122_750335.HtM
BbS.okapop169.sbs/PoSt/1122_684122.HtM
BbS.okapop170.sbs/PoSt/1122_315298.HtM
BbS.okapop171.sbs/PoSt/1122_346210.HtM
BbS.okapop172.sbs/PoSt/1122_996875.HtM
BbS.okapop173.sbs/PoSt/1122_041839.HtM
BbS.okapop163.sbs/PoSt/1122_546859.HtM
BbS.okapop165.sbs/PoSt/1122_706869.HtM
BbS.okapop166.sbs/PoSt/1122_238683.HtM
BbS.okapop167.sbs/PoSt/1122_778905.HtM
BbS.okapop168.sbs/PoSt/1122_535711.HtM
BbS.okapop169.sbs/PoSt/1122_313477.HtM
BbS.okapop170.sbs/PoSt/1122_869416.HtM
BbS.okapop171.sbs/PoSt/1122_932690.HtM
BbS.okapop172.sbs/PoSt/1122_847398.HtM
BbS.okapop173.sbs/PoSt/1122_867058.HtM
BbS.okapop174.sbs/PoSt/1122_537176.HtM
BbS.okapop175.sbs/PoSt/1122_142374.HtM
BbS.okapop176.sbs/PoSt/1122_169654.HtM
BbS.okapop177.sbs/PoSt/1122_560227.HtM
BbS.okapop178.sbs/PoSt/1122_737762.HtM
BbS.okapop179.sbs/PoSt/1122_537734.HtM
BbS.okapop180.sbs/PoSt/1122_979922.HtM
BbS.okapop181.sbs/PoSt/1122_628176.HtM
BbS.okapop182.sbs/PoSt/1122_634909.HtM
BbS.okapop183.sbs/PoSt/1122_139384.HtM
BbS.okapop174.sbs/PoSt/1122_441589.HtM
BbS.okapop175.sbs/PoSt/1122_141895.HtM
BbS.okapop176.sbs/PoSt/1122_888266.HtM
BbS.okapop177.sbs/PoSt/1122_883151.HtM
BbS.okapop178.sbs/PoSt/1122_536460.HtM
BbS.okapop179.sbs/PoSt/1122_517644.HtM
BbS.okapop180.sbs/PoSt/1122_423227.HtM
BbS.okapop181.sbs/PoSt/1122_178352.HtM
BbS.okapop182.sbs/PoSt/1122_568861.HtM
BbS.okapop183.sbs/PoSt/1122_111732.HtM
BbS.okapop174.sbs/PoSt/1122_901220.HtM
BbS.okapop175.sbs/PoSt/1122_462655.HtM
BbS.okapop176.sbs/PoSt/1122_898711.HtM
BbS.okapop177.sbs/PoSt/1122_861458.HtM
BbS.okapop178.sbs/PoSt/1122_607462.HtM
BbS.okapop179.sbs/PoSt/1122_339812.HtM
BbS.okapop180.sbs/PoSt/1122_992383.HtM
BbS.okapop181.sbs/PoSt/1122_057257.HtM
BbS.okapop182.sbs/PoSt/1122_324648.HtM
BbS.okapop183.sbs/PoSt/1122_507890.HtM
BbS.okapop174.sbs/PoSt/1122_725970.HtM
BbS.okapop175.sbs/PoSt/1122_196215.HtM
BbS.okapop176.sbs/PoSt/1122_265448.HtM
BbS.okapop177.sbs/PoSt/1122_896460.HtM
BbS.okapop178.sbs/PoSt/1122_456271.HtM
BbS.okapop179.sbs/PoSt/1122_912246.HtM
BbS.okapop180.sbs/PoSt/1122_618023.HtM
BbS.okapop181.sbs/PoSt/1122_789038.HtM
BbS.okapop182.sbs/PoSt/1122_040198.HtM
BbS.okapop183.sbs/PoSt/1122_839725.HtM
BbS.okapop174.sbs/PoSt/1122_163982.HtM
BbS.okapop175.sbs/PoSt/1122_966007.HtM
BbS.okapop176.sbs/PoSt/1122_769856.HtM
BbS.okapop177.sbs/PoSt/1122_991948.HtM
BbS.okapop178.sbs/PoSt/1122_130392.HtM
BbS.okapop179.sbs/PoSt/1122_280718.HtM
BbS.okapop180.sbs/PoSt/1122_506250.HtM
BbS.okapop181.sbs/PoSt/1122_819690.HtM
BbS.okapop182.sbs/PoSt/1122_617679.HtM
BbS.okapop183.sbs/PoSt/1122_473400.HtM
BbS.okapop174.sbs/PoSt/1122_217781.HtM
BbS.okapop175.sbs/PoSt/1122_711138.HtM
BbS.okapop176.sbs/PoSt/1122_869417.HtM
BbS.okapop177.sbs/PoSt/1122_405398.HtM
BbS.okapop178.sbs/PoSt/1122_632259.HtM
BbS.okapop179.sbs/PoSt/1122_489561.HtM
BbS.okapop180.sbs/PoSt/1122_710832.HtM
BbS.okapop181.sbs/PoSt/1122_193176.HtM
BbS.okapop182.sbs/PoSt/1122_169184.HtM
BbS.okapop183.sbs/PoSt/1122_557310.HtM

#牛客AI配图神器#

全部评论

相关推荐

点赞 评论 收藏
分享
11-07 11:05
已编辑
西安电子科技大学 golang
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务