2015-07-21 66 views
0

我在Bash,Solaris中编写Shell脚本。根据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 [email protected]$ip:$destpath #>> $log 2>&1 
       break 2 
      fi 
     else 
      sleep 5 
     fi 
    done 
done 
+0

是在solaris系统上可用的'stat'吗? 'stat --format%Y'例如给出最后一次修改时间 - 允许基于整数的快速比较。 – Fiximan

+0

'ls -t [pattern] | head -n 1'将显示适合该模式的最新文件(假设它们全部在一个目录中)。什么“有趣的人物”造成问题?请提供您尝试查找最新文件的示例 - 您发布的脚本与您的问题无关。 –

回答

0

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