使用zsh移动符合特定模式的子文件夹
解决方法
先确保目标目录存在,执行:
mkdir -p newfolder
然后直接用zsh的通配符特性一次性匹配并移动所有符合条件的文件夹:
mv **/*-hi(/) newfolder/
命令解释
**:递归匹配当前目录下所有层级的子目录*-hi:匹配名字以-hi结尾的条目(/):zsh的glob限定符,只筛选出目录(避免误移同名文件)
如果你的-hi文件夹只在当前目录的直接子目录下(比如folder1/abcd-hi这种结构,没有更深的嵌套),也可以用更简洁的写法:
mv */*-hi(/) newfolder/
你原来代码的问题
- 引号包裹了
$Folder/*-hi,zsh不会解析里面的通配符*,会把它当成一个字面文件名,自然找不到对应目录 - 没必要逐个遍历父目录,zsh的通配符可以直接完成批量匹配
测试建议
执行移动前可以先打印匹配结果确认:
echo **/*-hi(/)
内容的提问来源于stack exchange,提问作者Janne Schyffert
相关产品推荐
相关产品推荐

