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

如何复制目录下最新的abc_前缀文件?解决cp命令通配符报错

复制最新abc_前缀文件的解决方法

要实现仅复制/location1目录下最新的abc_前缀文件到/location/xyz_,可以用以下几种可靠的方法:

方法一:用ls排序取最新文件

利用ls -t按修改时间从新到旧排序文件,再通过head -n1获取最新的那个,最后执行复制:

cp "$(ls -t /location1/abc_* | head -n1)" /location/xyz_
  • ls -t:按文件修改时间降序排列(最新的在前)
  • head -n1:提取排序后的第一个文件
  • 用双引号包裹命令结果,避免文件名包含空格、特殊字符时出错

方法二:用find命令(更稳定)

如果需要处理包含特殊字符的文件名,或者想更精准控制搜索范围,用find命令更可靠:

cp "$(find /location1 -maxdepth 1 -type f -name 'abc_*' -printf '%T@ %p\n' | sort -nr | head -n1 | awk '{print $2}')" /location/xyz_
  • -maxdepth 1:限制仅搜索/location1目录本身,不递归子目录
  • -type f:只匹配文件(排除目录)
  • -printf '%T@ %p\n':输出文件的修改时间戳(秒级)和完整路径
  • sort -nr:按时间戳逆序排序(最新的在前)
  • awk '{print $2}':提取排序后的文件路径

额外优化:处理无匹配文件的情况

如果目录下没有abc_前缀的文件,上面的命令会报错,可以加个判断逻辑避免:

latest_file=$(ls -t /location1/abc_* 2>/dev/null | head -n1)
if [ -n "$latest_file" ]; then
    cp "$latest_file" /location/xyz_
else
    echo "未找到任何abc_前缀的文件"
fi
  • 2>/dev/null:把ls的错误输出(比如无匹配文件时的提示)丢弃
  • -n "$latest_file":检查变量是否非空,确保找到文件后再执行复制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 18:05:27