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

find命令搭配-exec mv执行重命名操作会删除原文件吗?

命令错误原因

你执行的命令find . -name "*.XML" -exec mv {} ADI.XML \;的核心问题是mv的目标路径使用了相对路径:

  • mv命令的目标路径ADI.XML默认相对于你执行find命令的工作目录(也就是/u0x/XMLs根目录),而非每个匹配文件所在的子目录
  • find每遍历到一个匹配的XML文件,就会把它移动到/u0x/XMLs根目录下并重命名为ADI.XML,后移动的文件会直接覆盖前一次生成的ADI.XML
  • 最终原各子目录里的匹配文件都会被移走,且只会在/u0x/XMLs根目录留下最后一个被处理的文件,其余所有文件都会被覆盖删除
文件恢复方案
  • 第一时间停止对/u0x目录所在磁盘的所有写入操作,避免被删除文件的数据块被新数据覆盖
  • 可使用testdisk、extundelete(仅适用于ext4文件系统)等本地数据恢复工具扫描磁盘分区尝试恢复被覆盖的文件,若磁盘在命令执行后没有新增写入,恢复成功率较高
正确的批量重命名命令

推荐使用-execdir参数替代-exec,该参数会在每个匹配文件所在的子目录执行后续命令,避免路径错误:

  1. 先执行以下命令确认匹配的文件符合预期,避免误操作:
find . -name "PROCESSED_ADI.XML" -print
  1. 确认无误后执行重命名操作:
find . -name "PROCESSED_ADI.XML" -execdir mv {} ADI.XML \;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:06:00