Bash;将目录更改为以 2* 或 21* 开头的文件夹

Bash; change directory to folders start with 2* or 21*

我有一系列文件夹,它们是根据创建日期和其他一些信息命名的;即

220310_AS
220307_DF
220228_1A
..
211228_QR
..
201224_HH

如何在 bash 脚本中循环遍历以 22 或 21 开头的文件夹? 这是我的部分代码不起作用

..
for dd in */2*; do
    cd "$dd"
    #do something
    eval "ls"
    cd ..
..

您的通配符 */2* 匹配原始目录下 2 级的目录。所以要回到原来的目录,你需要 cd ../.. 而不是 cd ...

您也可以在子 shell 中执行 cd,然后只需退出 shell 即可 return 您回到原始目录。

for dd in */2*; do (
    cd "$dd"
    # do stuff
); done