2015-07-21 157 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日期戳。一旦您知道列表中的哪個值是最新的,您可以選擇從列表中複製該項目。