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

如何从嵌套目录的每个子目录中随机复制一个.jpg文件?

从嵌套目录的每个子文件夹提取单个JPG文件的方法

Windows 平台

命令提示符(CMD)方案

直接在CMD里执行以下命令,记得替换实际路径:

for /r "你的根目录路径" %d in (.) do @for /f "delims=" %f in ('dir /b /a-d "%d\*.jpg" ^| findstr /n "^" ^| findstr "^1:" ^| delims=:') do @copy "%d\%f" "目标文件夹路径\"
  • for /r递归遍历指定根目录下的所有子文件夹
  • 内层命令筛选出每个文件夹里的第一个JPG文件,自动复制到目标目录

PowerShell 方案

PowerShell写法更直观,复制脚本执行即可:

Get-ChildItem -Path "你的根目录路径" -Filter *.jpg -Recurse | 
    Group-Object DirectoryName | 
    ForEach-Object { $_.Group[0] | Copy-Item -Destination "目标文件夹路径" }
  • 先递归抓取所有JPG文件,再按文件夹分组;每组取第一个文件复制到目标位置,要是想取最后一个,把$_.Group[0]改成$_.Group[-1]就行

Linux/macOS 平台

基础bash脚本

find "你的根目录路径" -type f -name "*.jpg" | while read file; do
    dir=$(dirname "$file")
    # 用临时文件标记目录已提取,避免重复复制
    if [ ! -f "/tmp/extracted_$dir.tmp" ]; then
        cp "$file" "目标文件夹路径/"
        touch "/tmp/extracted_$dir.tmp"
    fi
done

执行完毕后可以删除/tmp下的临时文件,释放空间。

高效awk写法

如果文件夹数量极多,这个方法速度更快:

find "你的根目录路径" -type f -name "*.jpg" | awk -F/ '{print dirname=substr($0,1,length($0)-length($NF)), $0}' | sort -k1,1 | awk '!seen[$1]++ {print $2}' | xargs -I {} cp {} "目标文件夹路径/"
  • 先通过find定位所有JPG文件,再按目录分组筛选出每个目录的第一个文件,最后批量复制到目标位置

注意事项

  • 所有命令中的路径要替换成你实际的根目录和目标目录
  • 如果目标目录存在重名文件,会直接被覆盖,建议提前备份,或者给复制的文件加原目录名前缀(比如PowerShell里可修改为Copy-Item -Destination "目标文件夹路径/$($_.Group.Directory.Name)_$($_.Group.Name)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 11:22:53