求基于修改日期复制5分钟后文件的脚本解决方案
复制5分钟内修改过的文件的解决方案
以下是针对不同操作系统的可行方案,可直接执行或封装成脚本:
Linux/macOS 命令行与脚本
直接命令行执行
用find结合cp快速实现需求:
find /你的源文件目录路径 -type f -mmin -5 -exec cp -n {} /你的目标目录路径 \;
参数说明:
-type f:仅处理文件(排除目录)-mmin -5:筛选修改时间在5分钟以内的文件(数字前的-代表“小于”,若需找5分钟之前的文件用+5)-exec cp -n {} ...:对每个匹配到的文件执行复制,-n用于避免覆盖目标目录中已存在的同名文件(无需该规则可去掉)
封装成可复用脚本
将路径和逻辑写入bash脚本,方便重复调用:
#!/bin/bash # 替换为你的实际路径 SOURCE_DIR="/home/user/documents" DEST_DIR="/home/user/recent_files" # 确保目标目录存在,不存在则自动创建 mkdir -p "$DEST_DIR" # 执行查找与复制操作 find "$SOURCE_DIR" -type f -mmin -5 -exec cp -n {} "$DEST_DIR" \;
保存为copy_recent_files.sh,执行chmod +x copy_recent_files.sh赋予执行权限后,直接运行即可。
Windows PowerShell 方案
直接命令行执行
通过PowerShell管道命令筛选并复制:
Get-ChildItem -Path C:\你的源文件目录路径 -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddMinutes(-5) } | Copy-Item -Destination C:\你的目标目录路径 -NoClobber
参数说明:
-File:仅处理文件Where-Object { $_.LastWriteTime -gt (Get-Date).AddMinutes(-5) }:筛选最后修改时间晚于5分钟前的文件-NoClobber:避免覆盖目标目录中的同名文件(无需该规则可去掉)- 若需递归查找子目录,给
Get-ChildItem添加-Recurse参数
封装成PowerShell脚本
# 替换为你的实际路径 $sourceDir = "C:\Users\user\documents" $destDir = "C:\Users\user\recent_files" # 检查目标目录是否存在,不存在则创建 if (-not (Test-Path -Path $destDir)) { New-Item -ItemType Directory -Path $destDir | Out-Null } # 复制符合条件的文件 Get-ChildItem -Path $sourceDir -File | Where-Object { $_.LastWriteTime -gt (Get-Date).AddMinutes(-5) } | Copy-Item -Destination $destDir -NoClobber
保存为Copy-RecentFiles.ps1,右键选择用PowerShell运行即可。
内容的提问来源于stack exchange,提问作者Josi
相关产品推荐
相关产品推荐

