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

如何为递归找到的不含FLAC标识的目录批量添加[FLAC]后缀

如何为递归找到的不含FLAC标识的目录批量添加[FLAC]后缀

嘿,我来帮你搞定这个批量重命名的需求!你已经精准筛选出了目标目录,接下来只需要把这些目录批量重命名就行,这里有几个实用的方法,都是原生工具或者常用命令,不用装额外软件:

  • 方法一:用find+mv原生组合(最通用)
    这里要注意一个关键细节:递归处理目录重命名时,一定要先处理子目录再处理父目录,不然先改了父目录的名字,后续子目录的路径就会失效。我们可以给find加-depth参数实现这个逻辑,命令如下:

    find . -type d -not -iname '*flac*' -depth -exec mv {} "{} [FLAC]" \;
    

    简单拆解下:

    • -depth:让find从最深层级的目录开始遍历处理,完美避免父目录改名影响子目录的问题
    • -exec mv {} "{} [FLAC]" \;:对每个找到的目录执行重命名,{}会被替换成当前找到的目录路径,直接在后面拼接 [FLAC]
  • 方法二:用rename命令(更简洁,适合有perl版rename的系统)
    如果你的系统装了perl版本的rename(很多Linux发行版默认带),可以用正则表达式更优雅地完成重命名:

    find . -type d -not -iname '*flac*' -depth -exec rename 's/$/ [FLAC]/' {} \;
    

    这里的正则s/$/ [FLAC]/意思是:在每个目录名的末尾($匹配行/字符串结尾)添加 [FLAC]后缀。

  • 重要测试建议
    为了避免误操作,你可以先预览所有要执行的重命名命令,只需要在mv或rename前面加echo即可:

    # 预览mv版本的操作
    find . -type d -not -iname '*flac*' -depth -exec echo mv {} "{} [FLAC]" \;
    # 预览rename版本的操作
    find . -type d -not -iname '*flac*' -depth -exec echo rename 's/$/ [FLAC]/' {} \;
    

    确认所有预览的重命名路径都是你想要的,再去掉echo执行真实操作就好啦!

备注:内容来源于stack exchange,提问作者Gianfranco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 06:50:31