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

如何用FIND命令为同名文件追加源文件夹名以避免覆盖?

解决方法

直接修改原命令,利用basename获取文件所在的父目录名,拼接成新的目标文件名,最终命令如下:

find . -name "a.txt" -execdir sh -c 'cp -v "$0" "/path/to/dest/$(basename "$PWD")_a.txt"' {} \;

命令拆解:

  • -execdir sh -c '...' {} \;:在每个找到a.txt的目录下启动shell执行后续命令,{}会被替换为当前找到的a.txt文件路径
  • $(basename "$PWD"):提取当前工作目录(也就是a.txt所在的父目录,比如example1)的名称
  • /path/to/dest/$(basename "$PWD")_a.txt:拼接出目标路径和文件名,最终生成example1_a.txt这类格式的文件
  • 保留echo可以先预览执行的复制命令(比如find . -name "a.txt" -execdir sh -c 'echo cp -v "$0" "/path/to/dest/$(basename "$PWD")_a.txt"' {} \;),确认无误后再去掉echo执行实际复制

注意:如果目标目录/path/to/dest/不存在,需要先执行mkdir -p /path/to/dest/创建目录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 11:50:32