You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OSX系统中用Shell批量重命名目录并移除末尾9个it开头字符

批量重命名目录:移除末尾9个以it开头的字符

问题分析

你之前的命令存在两个核心问题:

  1. find 未正确将目录路径传递给 mv,缺少循环或 -exec 执行逻辑
  2. 固定位置 ${i:50: -2} 的截取方式不通用,无法适配不同长度的目录名

以下是两种适配OSX环境的可行方案:

方案一:原生Bash循环实现

利用Bash字符串截取和find的深度遍历,确保先处理子目录再处理父目录(避免父目录重命名后子目录路径失效):

find /Users/myuser/Downloads/damod -depth -type d -name '*it???????' | while read -r dir; do
    # 从目录名末尾删除匹配的"it"开头9个字符
    new_dir="${dir%it???????}"
    # -v 参数显示重命名过程,方便验证
    mv -v "$dir" "$new_dir"
done
  • -depth:强制find先处理子目录,再处理父目录
  • -name '*it???????':匹配末尾包含it+7个任意字符的目录(共9个字符)
  • ${dir%it???????}:Bash字符串操作,从变量末尾删除匹配的模式

方案二:用brew安装的rename工具(更简洁)

  1. 先安装rename工具:
brew install rename
  1. 执行测试命令(仅预览重命名结果,不实际修改):
find /Users/myuser/Downloads/damod -depth -type d -exec rename -n 's/it.{7}$//' {} +
  1. 确认预览结果正确后,去掉-n执行实际重命名:
find /Users/myuser/Downloads/damod -depth -type d -exec rename 's/it.{7}$//' {} +
  • -n:测试模式,仅输出将要执行的重命名操作
  • s/it.{7}$//:正则表达式,替换目录名末尾的it+7个任意字符为空(即删除这9个字符)

内容的提问来源于stack exchange,提问作者Oscardot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 21:25:08