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

Linux批量重命名文件:删除|及之前的所有文本

批量重命名:删除文件名中竖线及其之前的内容

为啥你原来的命令失败?

你之前的命令里,-exec后面的|被shell当成了管道命令,根本没传递给bash脚本,属于语法错误。另外要注意:文件名里的竖线可能是半角|或全角¦,两种符号的匹配规则不一样,得对应调整。

正确的批量重命名命令

情况1:文件名含半角竖线|

这条命令会递归处理所有子文件夹里的目标文件:

find . -type f -name "*|*" -exec bash -c '
  for f do
    # 提取竖线之后的文件名部分
    new_name="${f##*|}"
    # 保留原目录路径,只修改文件名
    mv -- "$f" "${f%/*}/$new_name"
  done
' sh {} +

情况2:文件名含全角竖线¦

如果实际是全角符号,把命令里的|替换成¦即可:

find . -type f -name "*¦*" -exec bash -c '
  for f do
    new_name="${f##*¦}"
    mv -- "$f" "${f%/*}/$new_name"
  done
' sh {} +

命令关键部分说明

  • find . -type f -name "*|*":递归扫描当前目录及所有子文件夹,找出包含目标竖线的文件
  • ${f##*|}:贪婪匹配删除最后一个竖线及之前的所有字符,只保留竖线后的文件名内容
  • ${f%/*}/$new_name:确保文件留在原文件夹中,不会被移动到当前工作目录
  • mv --:避免文件名以-开头时被当成命令选项处理,防止报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 09:55:16