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

Synology NAS上超143字符长文件名批量截断重命名方法咨询

解决方案

前置提醒

  • 操作前务必先给对应共享文件夹创建快照,避免误操作导致文件丢失或文件名异常
  • 先运行测试命令确认修改范围符合预期后,再执行实际重命名操作
  • 命令默认只处理当前目录下的文件(不递归子目录),如果需要递归处理,删除命令中的-maxdepth 1参数即可

版本1:直接截断总文件名长度到143字符

测试命令(仅打印修改对比,不实际修改)

find . -maxdepth 1 -type f | while read -r f; do fname=$(basename "$f"); dir=$(dirname "$f"); [ ${#fname} -gt 143 ] && echo "原文件名: $fname -> 新文件名: ${fname:0:143}"; done

实际执行命令

find . -maxdepth 1 -type f | while read -r f; do fname=$(basename "$f"); dir=$(dirname "$f"); [ ${#fname} -gt 143 ] && mv -n "$f" "${dir}/${fname:0:143}"; done

mv命令加了-n参数,遇到重名文件会跳过不覆盖,避免误删数据。

版本2:截断同时保留文件扩展名

如果需要保留文件后缀(比如.pdf/.doc等,确保文件可正常打开),可以用以下命令,总文件名长度依然不超过143字符:

测试命令

find . -maxdepth 1 -type f | while read -r f; do fname=$(basename "$f"); dir=$(dirname "$f"); if [ ${#fname} -gt 143 ]; then ext="${fname##*.}"; new_fname="${fname%.*:0:$((143 - ${#ext} -1))}.${ext}"; echo "原文件名: $fname -> 新文件名: $new_fname"; fi; done

实际执行命令

find . -maxdepth 1 -type f | while read -r f; do fname=$(basename "$f"); dir=$(dirname "$f"); if [ ${#fname} -gt 143 ]; then ext="${fname##*.}"; new_fname="${fname%.*:0:$((143 - ${#ext} -1))}.${ext}"; mv -n "$f" "${dir}/${new_fname}"; fi; done

自定义长度说明

如果需要调整为其他长度限制,只需要把命令中的143替换为你需要的数值n即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 02:24:03