2017-07-18 67 views
0

我试图在UNIX中执行以下操作: 每天我都会得到一个格式为ONSITE_EXT_20170707的新文件,其中的数字表示日期。所以第二天我会收到一个文件ONSITE_EXT_20170708等。我的目标是取得这个文件,并重命名它没有日期。我用UNIX删除/更改文件名

mv ONSITE_EXT_$(date +%Y%m%d) ONSITE_EXT. 

然而,一些日子,所以我需要做的就是先检查有什么最新的文件(具有最新的日期)我可能不会得到一个新的文件,并只能重命名文件。这也应该检查是否有文件可用。

任何帮助首先非常感谢。

回答

1

假设你在同一个目录。文件到达的地方。

$ 猫file_move.sh

#!/bin/bash 
today_file=ONSITE_EXT_$(date +%Y%m%d) 
latest_file=`ls -r|head -1` #get the latest file in directory 
file_part=`echo $latest_file |cut -c1-10` #get only ONSITE_EXT part of file 
    if [ ! -z $today_file ] ; then #check if today_file variable is not empty i.e. todays file has arrived 
     mv ONSITE_EXT_$(date +%Y%m%d) ONSITE_EXT #move the file 
    else 
     mv $latest_file $file_part #if todays file isn't arrived. then move latest file only. 
    fi 
+0

喜syedav,感谢你的帮助。你能解释一下$ cat file_move.sh是什么吗?解决方案的一部分?另外,你能解释第3-5行发生了什么吗?我真的没有UNIX的经验 – afzaaldeveloper1

+0

$ cat file_move.sh不是脚本的一部分。只是为了显示文件的内容。几乎每一步都添加了评论。 – syadav

+0

非常感谢syedav!这很棒 – afzaaldeveloper1