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

如何用Bash将同名文件复制到指定目录并设置唯一文件名

批量复制并重命名指定文件的解决方案

需求说明

现有目录结构:

├── Directory 1
│ ├── img.png
├── Directory 2
│ ├── imgx.png
├── Directory 3
│ ├── img.png
...
...
├── Directory n
│ ├── img.png
├── Images

需完成两个操作:

  • 查找所有Directory X子目录中的img.png文件(部分目录可能不含该文件)
  • 将找到的文件复制到Images目录,并重命名为X_img.png(X为目录的数字编号,例如来自Directory 2的文件命名为2_img.png)

Linux/macOS 命令行实现

在包含所有Directory X和Images的根目录下,执行以下命令:

find . -type f -path "./Directory */img.png" | while read file; do
    dir_num=$(echo "$file" | grep -oP 'Directory \K\d+')
    cp "$file" "./Images/${dir_num}_img.png"
done
  • find . -type f -path "./Directory */img.png":递归匹配所有Directory X下的img.png文件
  • grep -oP 'Directory \K\d+':从路径中提取目录的数字编号
  • cp命令完成复制并重命名

Windows PowerShell 实现

切换到根目录后,执行以下脚本:

Get-ChildItem -Recurse -Filter "img.png" | Where-Object { $_.DirectoryName -match 'Directory \d+' } | ForEach-Object {
    $dirNum = [regex]::Match($_.DirectoryName, 'Directory (\d+)').Groups[1].Value
    Copy-Item $_.FullName -Destination ".\Images\${dirNum}_img.png"
}
  • Get-ChildItem -Recurse -Filter "img.png":递归查找所有img.png文件
  • Where-Object筛选出父目录为Directory X的目标文件
  • 正则提取目录编号后,通过Copy-Item完成复制重命名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 03:25:19