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

使用Shell脚本将随机文件夹结构中的最新文件复制至指定固定位置

实现需求的直接Shell脚本方案

这事儿其实挺简单直接的,用find命令配合排序逻辑就能搞定,我把完整的脚本写出来,你只需要替换掉对应的路径就能用:

#!/bin/bash

# 请替换成存放随机名称文件夹的父目录(所有随机文件夹都在这个目录下)
SOURCE_PARENT="/path/to/your/random/folders/parent"
# 固定目标路径
DEST="/fixed/location/latestfile.jpg"

# 核心逻辑:找到最新修改的文件
# 1. find遍历父目录下所有普通文件,输出"Unix时间戳 文件路径"格式的内容
# 2. sort -nr按时间戳倒序排序(最新的文件排最前面)
# 3. head -n1取第一行(最新的文件条目)
# 4. awk提取出文件路径部分
LATEST_FILE=$(find "$SOURCE_PARENT" -type f -printf "%T@ %p\n" | sort -nr | head -n1 | awk '{print $2}')

# 检查是否成功找到文件,再执行复制
if [ -n "$LATEST_FILE" ]; then
    cp "$LATEST_FILE" "$DEST"
    echo "✅ 已成功复制最新文件:$LATEST_FILE 到 $DEST"
else
    echo "❌ 错误:在 $SOURCE_PARENT 下未找到任何文件"
    exit 1
fi

关键步骤解释:

  • find "$SOURCE_PARENT" -type f -printf "%T@ %p\n":递归查找父目录下所有普通文件,用%T@输出精确到毫秒的Unix时间戳,搭配文件路径,这样排序更精准。
  • sort -nr:对时间戳进行数字倒序排序,确保最新修改的文件排在第一行。
  • awk '{print $2}':从排序后的第一行里提取出文件的完整路径,忽略前面的时间戳。
  • 最后的判断逻辑是为了避免当目录下没有文件时,cp命令执行出错。

额外优化建议:

如果你的目标文件类型固定是.jpg,可以在find命令里加个过滤条件,避免误抓其他类型文件:

LATEST_FILE=$(find "$SOURCE_PARENT" -type f -name "*.jpg" -printf "%T@ %p\n" | sort -nr | head -n1 | awk '{print $2}')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 04:42:34