【问题标题】:Get latest/newest file based on file pattern in Shell script根据 Shell 脚本中的文件模式获取最新/最新文件
【发布时间】:2015-07-21 02:52:09
【问题描述】:

我正在用 Bash、Solaris 编写一个 Shell 脚本。

我正在尝试获取与特定文件模式匹配的最新文件并将其 SCP 覆盖。

我一直在阅读,大多数实现都是基于 ls 命令的,这对有趣的字符效果不佳。我正在寻找可以与我迄今为止所写内容一起使用的替代方案。

for i in {1..5}
do
    for GMSFILE in $srcpath/KMS_MSEA_StatusAllocation_A*Y*.gms
    do
        if [ -e "$GMSFILE " ]
        then
            #GMS File Exist
            TXTFILE=${GMSFILE %%.*}.txt
            # Find same file name with txt extension now
            if [ -f "$TXTFILE" ]
            then
                echo $TXTFILE
                #scp -P 22 $GMSFILE $id@$ip:$destpath  #>> $log 2>&1
                break 2
            fi
        else
            sleep 5
        fi
    done
done

【问题讨论】:

  • stat 在 solaris 系统上可用吗? stat --format %Y 例如以纪元秒为单位给出最后修改时间 - 允许基于整数的快速比较。
  • ls -t [pattern] | head -n 1 将显示符合该模式的最新文件(假设它们都在一个目录中)。哪些“有趣的角色”会引起问题?请提供您尝试查找最新文件的示例 - 您发布的脚本与您的问题无关。

标签: bash shell unix solaris


【解决方案1】:

您可以使用带有-r 选项的date 命令来显示上次修改文件的时间。获得文件列表后,您可以使用date -r $TXTFILE +%s 获取最后一次修改文件的 Unix 日期戳。一旦您知道列表中的哪个值是最新的,您就可以选择从列表中复制该项目。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    • 2021-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 2013-06-14
    相关资源
    最近更新 更多