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

基于文件名片段创建层级文件夹的macOS bash脚本需求

适配的层级整理脚本

针对你的有声书命名格式Author - Title.m4b,可以用下面的bash脚本实现二级文件夹层级的整理:

find . -type f -name "*.m4b" -maxdepth 1 -exec bash -c '
  file="$0"
  # 提取作者名:截取" - "之前的部分
  author="${file%% - *}"
  # 提取书名:先截取" - "之后的部分,再去掉.m4b后缀
  title="${file#* - }"
  title="${title%.m4b}"
  # 递归创建作者/书名的层级文件夹
  mkdir -p "$author/$title"
  # 将原文件移动到目标文件夹
  mv "$file" "$author/$title/"
' {} \;

脚本说明

  • find . -type f -name "*.m4b" -maxdepth 1:仅扫描当前目录下的所有m4b有声书文件,不递归处理子目录
  • 字符串分割逻辑完全匹配你的命名规则:以-(空格-空格)作为作者和书名的分隔符
  • mkdir -p:确保层级文件夹被创建,即使作者或书名文件夹已存在也不会报错
  • 移动文件时保留原文件名,最终结构为作者文件夹/书名子文件夹/原文件名.m4b

特殊场景适配

如果你的书名中包含-(空格-空格),上述脚本会将第一个-作为分隔点,导致书名截取不完整。这种情况可以调整为按最后一个-分割,修改后的脚本如下:

find . -type f -name "*.m4b" -maxdepth 1 -exec bash -c '
  file="$0"
  # 按最后一个" - "分割作者和书名
  author="${file% - *}"
  title_part="${file##* - }"
  title="${title_part%.m4b}"
  mkdir -p "$author/$title"
  mv "$file" "$author/$title/"
' {} \;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 10:20:00